• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

질문있습니다

24.06.20 15:02 작성 조회수 64

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

OMG님의 프로필

OMG

2024.06.21

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

soundAnimal(dog);

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

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

image

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

 

감사합니다.

Choi님의 프로필

Choi

질문자

2024.06.25

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

채널톡 아이콘