부모 클래스의 private 멤버에 대한 계층 구조를 확장합니다.아래 두 개의 클래스가 있습니다
하지만 값은 Animal 또는 Cat의 속성 값입니까? 동물이 있다면, 왜 고양이가 그것을 얻을 수 있습니까?
부모 클래스의 private 멤버에 대한 계층 구조를 확장합니다.아래 두 개의 클래스가 있습니다
하지만 값은 Animal 또는 Cat의 속성 값입니까? 동물이 있다면, 왜 고양이가 그것을 얻을 수 있습니까?
private
Animal
에 선언 있지만 재산 name
은 여전히 Cat
에을 상속됩니다. 하지만 우리는 직접 액세스 할 수 없습니다. 즉, 과 같은 .
연산자와 함께 name
연산자를 사용할 수 없습니다. 그러나 getName
메서드는 Animal
에 선언되어 있으므로 Animal
의 전용 멤버에 액세스 할 수 있습니다. 또한 getName
은 public
이므로 Cat
에 액세스 할 수 있습니다.
이것은 하위 클래스의 수퍼 클래스 멤버 인 private
에 액세스하고 있음을 의미합니다. 이것은 꽤 분명합니다. name
는 Animal
의 public 생성자를 통해 설정 - 다음 name
이 Tom
로 설정되어 얼마나 많은
이 때문에 그것에 대해 혼란스러워 보일 수 있습니다. Cat
의 생성자는 name
의 값을 Animal
생성자에 전달한 다음이를 설정합니다.
편집 : Cat cat = new Cat("Tom");
라고하면, 하나의 개체 만 생성했음을 의미합니다. Cat
의 개체입니다. Animal
의 개체를 만들지 않았습니다. Animal
의 생성자가 호출되었지만 Animal
인스턴스를 생성하지 않습니다. 위의 경우에서 속성 name
은 Cat
이 아닌 Animal
의 인스턴스에 속합니다.
Animal
에는 개인 회원 name
이 있습니다. Cat
의 생성자가 Animal
의 생성자를 호출하면 getName
이 Animal
인 값을 반환 할 수 있습니다.
Rahul Bobhate, 값 "Tom"은 Cat 또는 Animal의 인스턴스에 속하는가? "Tom"이 머물렀던 곳이 혼란 스럽습니까? Animal의 인스턴스? 고양이? –
@DigengTianhan : 답을 수정했습니다. –