• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Animal 타입

22.04.06 16:17 작성 조회수 175

0

21분쯤에  Dog dd = new Dog(); 를

 Animal ani  =new Dog(); 이렇게 쓰는 이유가 뭔지모르겠습니다.  Animal 타입으로  객체를 생성하면 Animal 특성과 메소드만 사용할수있는게 아닌가요 ?? 

만약 이렇게 되면 Animal에만 메소드와 객체속성을 부여하고  dog클래스는 메소드,객체속성을 부여하지않고 사용해야하는게 아닌가 생각이듭니다.  답변해주시면 감사하게습니다.!! 

 

답변 1

답변을 작성해보세요.

0

이후 설명을 계속 들어보시면 이유를 알수는 있을것입니다
Animal ani  =new Dog(); 
먼저 위처럼 사용할려면 Animal class와 Dog class가 상속관계가 전제가 되어야 됩니다.
아래처럼  Dog 객체를  사용하기위해서 2가지 형식으로 객체를 생성하여 사용할수있는데
1)처럼 사용해도되고 2)번 처럼 사용해도 됩니다.
---------------------------------
1) Dod d=new Dog();
2) Animal ani  =new Dog(); 
-----------------------------------

그러면 2)번 처럼 ->
Animal ani=new Dog(); 사용하는 경우는 어떤 경우냐면
Dog객체가 어떻게 동작하는지 모르는경우입니다. (즉, Dog 클래스의 내부 구조를 볼수 없어 Dog객체를 단독으로 사용 하기가 어려운 경우를 말하는 것입니다.)
Dog d=new Dog() 이렇게 객체를 생성해서 사용하기가 조금 어렵다는 것입니다.
그래서 아래처럼  Animal 클래스를 이용해서 Dog를 동작시키는 것입니다.
Animal ani=new Dog();  
위처럼 객체를 생성하면(Animal class는 내부 구조를 알고있다는 전제가 되어야되구요)
Animal class를 통해서 Dog 객체를 동작시킬수가 있다는 것입니다.
(Animal이 가지고있는 Method를 Dog가 재정의를 해야되구요)

* 질문자님이 질문하셨지만 이부분이 자바에서 굉장히 중요합니다.(상속을 사용하는 이유도되구요)

마지막으로 설명을 드리면 델레비전(TV)과 리모콘(RemoCon)관계를 생각해보세요
RemoCon으로 TV를 동작시키는 원리는 생각해보시면 조금 이해가 되실 겁니다.
TV의 내부 동작원리는 알수는 없지만 RemoCon으로 동작을 시킬수있는 것처럼요??
아래처럼요~~
RemoCon auto=new TV();
아래와 비슷하죠?

 Animal ani  =new Dog();

이해가 되셨는지 모르겠습니다. 영상 후반부도 계속 들어보시고 그부분 설명을 반복해서
들어보시면 좋겠습니다^^