인프런 커뮤니티 질문&답변

Choi님의 프로필 이미지
Choi

작성한 질문수

김영한의 실전 자바 - 기본편

다형성 활용2

질문있습니다

해결된 질문

작성

·

154

1

public class BabyDog extends Dog{
    
    @Override
    public void sound() {
        System.out.println("낑낑");
    }
}

BabyDog라는 클래스를 만들고 Dog를 상속받았을경우

메인클래스에서 soundAnimal(dog)를했을때 제가생각하는 이미지는

sound() Animal

sound() Dog

sound() BabyDog

이렇게돼서 결국 맨아래 BabyDog sound가불려서

낑낑이나올거같은데 멍멍이나오더라구요

어떤점을 잘못이해한건지 알려주실수있을까요?

답변 1

1

안녕하세요. Choi님, 공식 서포터즈 OMG입니다.

soundAnimal(dog);

에서 dog의 인스턴스 타입이 BabyDog인지 Dog인지에 따라 달라질 것 같습니다 😀

dog의 타입이 어떻게 될까요?

image

만약 클래스만 선언한 경우라면 BabyDog를 작성하더라도 기존의 동작에 영향이 가지 않습니다.

 

감사합니다.

Choi님의 프로필 이미지
Choi
질문자

감사합니다!! 이해됐어요 ㅎㅎ

Choi님의 프로필 이미지
Choi

작성한 질문수

질문하기