하위 클래스의 생성자 메소드를 사용하여 하위 클래스의 객체를 생성할 때 하위 클래스에서 선언된 멤버 변수뿐만 아니라 상위 클래스의 멤버 변수에도 메모리 공간이 할당되지만, 하위 클래스에서 상속받은 부분만 메모리가 할당됩니다. 하위 클래스가 할당됩니다. 멤버 변수는 하위 클래스 개체에 할당된 변수 역할을 합니다.
즉, 상위 클래스의 전용 멤버 변수가 메모리 공간을 할당했지만 하위 클래스와 상위 클래스가 동일한 패키지에 있지 않은 경우 유사하게 하위 클래스 개체의 변수로 사용되지 않습니다. 상위 클래스의 멤버 변수에는 메모리 공간이 할당되어 있지만 하위 클래스 객체의 변수로는 할당되지 않습니다.
이 시점에서 우리는 하위 클래스가 객체를 생성할 때 일부 메모리가 낭비되는 것처럼 느낍니다. 하위 클래스로 객체를 생성하면 상위 클래스의 멤버 변수에도 메모리 공간이 할당되지만 그 중 일부만 하위 클래스 객체에 할당된 변수로 사용되기 때문이다. 예를 들어, 부모 클래스의 전용 멤버 변수에는 메모리 공간이 할당되어 있지만 하위 클래스 개체의 변수로 사용되지는 않습니다. 물론 부모 클래스를 사용하지 않기 때문에 부모 클래스 개체의 변수는 아닙니다. 어떤 객체든 생성하는 클래스입니다. 그러나 하위 클래스에는 상위 클래스에서 상속된 일부 메서드가 여전히 있지만 이러한 메서드는 상속되지 않은 변수에 대해 작동할 수 있다는 점에 유의해야 합니다.
예를 들어, ChinaPeople 하위 클래스의 객체는 상속된 메서드를 호출하여 하위 클래스에서 상속되지 않았지만 메모리 공간이 할당된 변수를 작동합니다.
classPeople{privateintaverHeight=168;publicintgetAverHeight(){returnaverHeight;}}classChinaPeopleextendsPeople{intheight;publicvoidsetHeight(inth){//height=h+averHeight;//불법, 하위 클래스는 averHeightheight=h;}publicintgetHeight(){returnheight를 상속하지 않습니다. ; }}publicclassMainpublicstaticvoidmain(Stringargs[]){ChinaPeoplezhangSan=newChinaPeople();System.out.println(하위 클래스 객체에 의해 상속되지 않은 평균 높이 값: +zhangSan.getAverHeight());zhangSan.setHeight(180);System .out .println(하위 클래스 객체의 인스턴스 변수 height 값은 +zhangSan.getHeight());}}
실행 결과는 다음과 같습니다.
서브클래스 객체에 상속되지 않은 AverageHeight 값은 168입니다. 서브클래스 객체의 인스턴스 변수 height 값은 180입니다.