2017-03-17 1 views
0

안녕하세요, 나는 Java을 배우고 있는데, 나는 그들 사이의 차이점을 이해하고 싶습니다. animal은 동물 유형이고 animal3은 Dog 유형이지만 어떤 유형이 animal2일까요? 실제로 여기서 무슨 일이 일어나고있는거야? 고맙습니다.변수 선언

+2

상속 – Jens

+1

에 대해 그리고 다형성 (polymorphism)에 대해 알아 학습을위한 자바 문서를 참조하십시오. 이것이 OOP의이 속성을 사용하는 예 중 하나입니다. –

+0

이 개념은 Java에서 Upcasting으로 알려져 있습니다. 왜냐하면 여기에 수퍼 유형으로 캐스팅하기 때문입니다. Animal, animal2는 여전히 Animal을 참조하는 dog 객체입니다. 개가 동물이라는 것을 알기 때문에 그것은 완전히 유효합니다. (ClassCastException'을 던지면서 다운 캐스팅하는 동안주의하십시오.) –

답변

1
Animal animal2 = new Dog(); 

Dog 클래스는 클래스 Dog이 때문에 클래스 동물의이 참조의 클래스 Animal의 속성을 상속하기 때문에 Animal의 서브 클래스 클래스 개입니다 하위 클래스의 객체를 보유하지만 당신의 메소드를 호출 할 경우에 override입니다 class Dog. 메소드 Dog이 호출됩니다. 질문의

답변 :

객체 animal2 형 클래스 개입니다. 클래스 Animal의 참조 변수입니다.

+0

animal2가 Dog 클래스 유형이고 참조 변수의 클래스가 Animal 인 경우, 같은 이름의 메소드를 호출 할 때 Animal 클래스 또는 Dog 클래스의 메소드를 사용합니까? Dog 클래스의 – Ken

+0

메서드가 호출됩니다. –

0

동물 animals2 = 새로운 Dog(); 이것은 타고있는 Concept.Over Riding는 부모 클래스의 메소드가 하위 클래스에 의해 사용되는 다형성 개념입니다.

0
Animal animal = new Animal(); 

    Animal animal2 = new Dog(); 

    Dog animal3 = new Dog(); 

이 세 가지 라인은 당신이 가진 세 개의 객체 anima animal2 animal3

당신에서

메인 클래스 동물의 당신의 선언에 두 개의 서로 다른 생성자

먼저 어떤 매개 변수와 두 번째가없는 public Animal()입니다 public Animal(int a, String n)

다음은 메인 클래스의 속성을 상속받은 서브 클래스 Dog입니다. Animal

당신은 당신이 사용하는 어떤 생성자 호출 위에 Dog이 개체의 선언에서 또한 public Dogpublic Dog(int a, String n)

이 생성자가 서브 클래스 내부.

더 나은 더 click here