Java 物件構造與初始化

2021-07-04 18:39:54 字數 1425 閱讀 5182

如果沒有this及super,則編譯器自動加上super(),即呼叫直接父類不帶引數的構造方法。任何子類必須先或顯示或隱式地呼叫直接父類的構造方法

class

constructcallthisandsuper

}class

person

person( string name, int age )

}class

student

extends

person

student( string name, int age, string school )

}class

graduate

extends

student

}-----------output-----------

in person(string,int)

in student(string,int,string)

in student()

in graduate()

- 必須所有父類的構造都必須得到呼叫,否則整個物件的構建就可能不正確。
classa;}

class

bextends

a // 編譯不通過,提示構造構造方法不存在

}

- 編譯出錯是因為,在類b中的構造方法沒有`this`及`super`,因此編譯器會自動呼叫父類的構造方法,即`b(string a)`,但是類a中由於已經顯示地宣告了乙個構造方法`a(int)`,因此系統就不會在生產預設的構造方法`a()`,所以編譯出錯。解決方法:

1. 在類b的構造方法中,加入`super(3)`

2. 在a中加入乙個不帶引數的構造方法`a(){}`

3. 去掉a中全部的構造方法,則compiler會自動加入乙個不帶引數的構造方法。

靜態初始化(static initializers)

class

initialtest

int n=10; //step2

static

int x;

static

}class

initialtest2

extends

initialtest

int a;

static

}-----------output-----------

static...1

static2...2

initialtest...11

initialtest2...0

this.a=6

[finished in 1.4s]

JAVA學習(物件構造與初始化)

物件都有構造方法,如果沒有的話,編譯器會自動加乙個default構造方法 不帶任何引數 但如果有了構造方法,編譯器不會加上default構造方法。我們的任何乙個物件,都需要通過constructor構造。這裡還有乙個值得注意的點,抽象類也可以有構造方法,只是不能通過構造方法例項化乙個物件。這個構造方...

java中物件的初始化與構造器

例子 乙個天體資料類 class body 可以做天體物件的建立與初始化 body sun new body sun.idnum body.nextid sun.name sol sun.orbits null body earth new body earth.idnum body.nextid ...

物件構造和初始化

1 構造方法 物件都有構造方法,如果沒有,則新增乙個default方法 抽象類有構造方法 2 呼叫本類和父類 this 本類其他 super父類 父類所有構造方法都得到呼叫 例 classa class bextends a 不能通過編譯 1.class a a int a 2.classa3.cl...