Python知識分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
《劍指offer》Java理解靜態(tài)綁定與動(dòng)態(tài)綁定 PDF 下載
發(fā)布于:2024-01-15 09:43:35
(假如點(diǎn)擊沒反應(yīng),多刷新兩次就OK!)

《劍指offer》Java理解靜態(tài)綁定與動(dòng)態(tài)綁定  PDF 下載  圖1

 

 

 

資料內(nèi)容:

 

靜態(tài)綁定
在程序運(yùn)行前,也就是編譯時(shí)期JVM就能夠確定方法由誰調(diào)用,這種機(jī)制稱為靜態(tài)綁定
識別靜態(tài)綁定的三個(gè)關(guān)鍵字以及各自的理解
如果一個(gè)方法由private、Static、final任意一個(gè)關(guān)鍵字所修飾,那么這個(gè)方法是前期綁定的
構(gòu)造方法也是前期綁定
private:private關(guān)鍵字是私有的意思,如果被private修飾的方法是無法由本類之外的其他類所調(diào)用的,
也就是本類所特有的方法,所以也就由編譯器識別此方法是屬于哪個(gè)類的
public class Person {
private String talk;
private String canTalk(){
return talk;
}
}
class Animal{
public static void main(String[] args) {
Person p = new Person();
// private 修飾的方法是Person類獨(dú)有的,所以Animal類無法訪問(動(dòng)物本來就不能說話)
// p.canTalk();
}
}
final:final修飾的方法不能被重寫,但是可以由子類進(jìn)行調(diào)用,如果將方法聲明為final可以有效的關(guān)閉
動(dòng)態(tài)綁定
public class Fruit {
private String fruitName;
final String eatingFruit(String name){
System.out.println("eating " + name);
return fruitName;
}
}
class Apple extends Fruit{
// 不能重寫final方法,eatingFruit方法只屬于Fruit類,Apple類無法調(diào)用
// String eatingFruit(String name){
// super.eatingFruit(name);
// }
String eatingApple(String name){
return super.eatingFruit(name);
}
}
static: static修飾的方法比較特殊,不用通過new出某個(gè)類來調(diào)用,由類名.變量名直接調(diào)用該方法,這
個(gè)就很關(guān)鍵了,new 很關(guān)鍵,也可以認(rèn)為是開啟多態(tài)的導(dǎo)火索,而由類名.變量名直接調(diào)用的話,此時(shí)
的類名是確定的,并不會產(chǎn)生多態(tài),如下代碼:
public class SuperClass {
public static void sayHello(){
System.out.println("由 superClass 說你好");
}
}
public class SubClass extends SuperClass{
public static void sayHello(){
System.out.println("由 SubClass 說你好");
}
public static void main(String[] args) {
SuperClass.sayHello();
SubClass.sayHello();
}
}