オブジェクト向けの4つのプロパティ(2):継承(3)
6154 ワード
6.継承とTメモリ
次のサンプルコードを表示します.
Animal.java
package inheritance03;
public class Animal {
public String name;
public void showName(){
System.out.println("안녕 나는 %s야. 반가워\n", name);
}
}
Penguin.javapackage inheritance03;
public class Penguin extends Animal{
public String habitat;
public void showHabitat(){
System.out.println("%s는 %s에 살아\n", name, habitat);
}
}
Driver.javapackage inheritance03;
public Class Driver {
public static void main(String[] args) {
Penguin pororo = new Penguin();
pororo.name = "뽀로로";
pororo.habitat = "남극";
pororo.showName();
pororo.showHabitat();
Animal pingu = new Penguin();
pingu.name = "핑구";
// pingu.habitat = "EBS";
pinu.showName();
// pingu.showHabitat();
// Penguin happyfeet = new Animal();
}
}
Penguin pororo = new Penguin();実行後、Tメモリ構造は以下の通りである.PenguinクラスのインスタンスがHip領域に現れるだけでなく,AnimalクラスのインスタンスもHip領域に現れることが分かる.
하위 클래스의 인스턴스가 생성될 때 상위 클래스의 인스턴스도 생성된다.
事実上のAnimalインスタンスに加えて、すべてのクラスの最適クラスObjectクラスのインスタンスが作成されます.続いてAnimalpingu=new Penguin();実行後、Tメモリの構造は以下の通りである.
これとは異なり、pinguオブジェクト参照変数はPenguinインスタンスではなくAnimalインスタンスを指します.したがって、pinguオブジェクト参照変数はPenguin属性habitと動作showHabitat()メソッドを使用できません.
リファレンス
Reference
この問題について(オブジェクト向けの4つのプロパティ(2):継承(3)), 我々は、より多くの情報をここで見つけました https://velog.io/@jsj3282/객체지향의-4대-특성2-상속3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol