関係を継承するクラスのインスタンス化順序
2169 ワード
親Allen
サブクラスLittleAllen
メイン関数Main
Result:
まとめ:インスタンス化(クラスロード)の順序は、親静的変数->親静的メソッド->子静的変数->子静的メソッド->親インスタンス変数->親インスタンスメソッド->親構築メソッド->子インスタンス変数->子インスタンスメソッド->子クラス構築メソッドです.
説明:nullという出力結果があります.サブクラスは親のgetId()メソッドを書き換えていますが、インスタンス化順序ではidはprivate修飾の変数ですが、static静的修飾ではありませんので、この場合は対応する初期化値を出力することはできません.システムのデフォルトでnullに初期化するしかありません.
public class Allen {
//
private static String NAME = "Allen Baba";
//
private String id = "2017_JJ4";
//
static{
System.out.println("Baba stand_Play");
}
//
{
System.out.println("Baba move_Play");
}
// name
public String getName() {
return NAME;
}
// id
public String getId() {
return id;
}
public void emmm() {
System.out.println(NAME);
}
Allen() {
emmm();
System.out.println("This Constructor is->" + this);
System.out.println(getName());
System.out.println(getId());
}
}
サブクラスLittleAllen
public class LittleAllen extends Allen{
private static String NAME = "Little Allen";
private String id = "Little_2017_JJ4";
public static void Little_Stand_Play() {
System.out.println("Little_Stand_Play");
}
public void Little_Move_Play() {
System.out.println("Little_Move_Play");
}
static {
System.out.println("Little_Stand_Play");
}
{
System.out.println("Little_Move_Play");
}
public String getName() {
return this.NAME;
}
public String getId() {
return this.id;
}
public void little_emmmm() {
System.out.println(NAME);
}
public LittleAllen() {
little_emmmm();
System.out.println("Little Allen Start~~~~");
System.out.println(getName());
System.out.println(getId());
}
}
メイン関数Main
public class Main {
public static void main(String[] args) {
Allen allen = new LittleAllen();
}
}
Result:
Baba stand_Play
Little_Stand_Play
Baba move_Play
Allen Baba
This Constructor is->qqttest.LittleAllen@7852e922
Little Allen
null
Little_Move_Play
Little Allen
Little Allen Start~~~~
Little Allen
Little_2017_JJ4
まとめ:インスタンス化(クラスロード)の順序は、親静的変数->親静的メソッド->子静的変数->子静的メソッド->親インスタンス変数->親インスタンスメソッド->親構築メソッド->子インスタンス変数->子インスタンスメソッド->子クラス構築メソッドです.
説明:nullという出力結果があります.サブクラスは親のgetId()メソッドを書き換えていますが、インスタンス化順序ではidはprivate修飾の変数ですが、static静的修飾ではありませんので、この場合は対応する初期化値を出力することはできません.システムのデフォルトでnullに初期化するしかありません.