今天動寶兒就與大家一起分享一下this和super的應(yīng)用,看看Java里this和super是怎么一回事,究竟如何理解回答。
Java提供了一this關(guān)鍵字,this關(guān)鍵字總是指向調(diào)用該方法的對象。根據(jù)this出現(xiàn)的位置的不同,this作為對象的默認(rèn)引用有2種情形:
1.構(gòu)造器中引用(指向)該構(gòu)造器正在初始化的對象;
2.在方法中引用(指向)調(diào)用該方法的的對象。
this很大的作用就是讓一個類中的一個方法,訪問該類里的另一個方法或者實例變量,示例:
public void run()
{
this.jump(); //jump()為另一個類的方法
}
this還可以,通過this調(diào)用另一個重載的構(gòu)造器的初始化代碼,this(parameter1,parameter2); 示例:
public Apple(){}public Apple(String name,String color)
{
this.name = name;
this.coloe = color;
}public Apple(String name,String color,double weight)
{
//通過this調(diào)用另一個重載的構(gòu)造器的初始化代碼
this(name,color);
this.weight = weight;
}
this可以代表任何對象,誰調(diào)用this所在方法,this就代表誰。Java允許對象的一個成員直接調(diào)用另一個成員,可以省略this前綴,但是,如果方法里有個局部變量和成員變量同名,要在該方法里訪問這個被覆蓋的成員變量,必須使用this前綴。
當(dāng)子類覆蓋(重寫)了父類方法后,子類的對象將無法訪問父類中被覆蓋的方法,但使用super關(guān)鍵字可以在子類中調(diào)用父類中被覆蓋的方法。
如果子類定義了和父類同名的實例變量,則會發(fā)生子類實例變量隱藏(不是覆蓋)父類實例變量的情形,可以在子類定義的實例方法中通過super關(guān)鍵字訪問父類中被隱藏的實例變量。
注意:
this、super在調(diào)用構(gòu)造器方面:this調(diào)用的是同一個類中重構(gòu)的構(gòu)造器,super調(diào)用的是父類的構(gòu)造器。另外:不管是否使用super調(diào)用來執(zhí)行父類構(gòu)造器的初始化代碼,子類構(gòu)造器總會默認(rèn)調(diào)用父類構(gòu)造器一次。
以上就是動寶兒給大家?guī)淼?/span>this和super的應(yīng)用,更多一手資訊盡在動力節(jié)點。