2014-04-30 3 views

답변

1

privateAnimal에 선언 있지만 재산 name은 여전히 ​​Cat을 상속됩니다. 하지만 우리는 직접 액세스 할 수 없습니다. 즉, 과 같은 . 연산자와 함께 name 연산자를 사용할 수 없습니다. 그러나 getName 메서드는 Animal에 선언되어 있으므로 Animal의 전용 멤버에 액세스 할 수 있습니다. 또한 getNamepublic이므로 Cat에 액세스 할 수 있습니다.

이것은 하위 클래스의 수퍼 클래스 멤버 인 private에 액세스하고 있음을 의미합니다. 이것은 꽤 분명합니다. nameAnimal의 public 생성자를 통해 설정 - 다음 nameTom로 설정되어 얼마나 많은

이 때문에 그것에 대해 혼란스러워 보일 수 있습니다. Cat의 생성자는 name의 값을 Animal 생성자에 전달한 다음이를 설정합니다.

편집 : Cat cat = new Cat("Tom");라고하면, 하나의 개체 만 생성했음을 의미합니다. Cat의 개체입니다. Animal의 개체를 만들지 않았습니다. Animal의 생성자가 호출되었지만 Animal 인스턴스를 생성하지 않습니다. 위의 경우에서 속성 nameCat이 아닌 Animal의 인스턴스에 속합니다.

+0

Rahul Bobhate, 값 "Tom"은 Cat 또는 Animal의 인스턴스에 속하는가? "Tom"이 머물렀던 곳이 혼란 스럽습니까? Animal의 인스턴스? 고양이? –

+0

@DigengTianhan : 답을 수정했습니다. –

0

Animal에는 개인 회원 name이 있습니다. Cat의 생성자가 Animal의 생성자를 호출하면 getNameAnimal 인 값을 반환 할 수 있습니다.

관련 문제