本文介紹了多態(tài)在Java的方法參數(shù)中不起作用的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我寫(xiě)了以下代碼:
class Plane {}
class Airbus extends Plane {}
public class Main {
void fly(Plane p) {
System.out.println("I'm in a plane");
}
void fly(Airbus a) {
System.out.println("I'm in the best Airbus!");
}
public static void main(String[] args) {
Main m = new Main();
Plane plane = new Plane();
m.fly(plane);
Airbus airbus = new Airbus();
m.fly(airbus);
Plane planeAirbus = new Airbus();
m.fly(planeAirbus);
}
}
結(jié)果為:
I'm in a plane
I'm in the best Airbus!
I'm in a plane
毫不奇怪,前兩個(gè)調(diào)用分別給出I'm in a plane
和I'm in the best Airbus!
。
Plane planeAirbus = new Airbus();
該方法將該對(duì)象視為飛機(jī),即使實(shí)際對(duì)象是一架空中客車(chē)。即使我將abstract
添加到class Plane
,也沒(méi)有什么變化,最后一次調(diào)用的結(jié)果仍然是I'm in a plane
因此,問(wèn)題是為什么多態(tài)在方法參數(shù)和調(diào)用中不起作用?這樣做有什么目的嗎?它是如何工作的?
推薦答案
這里的問(wèn)題是JAVA不支持方法參數(shù)的動(dòng)態(tài)綁定。您看到的是靜態(tài)綁定,即在編譯時(shí)選擇要調(diào)用的方法的重載。
另見(jiàn):Static Binding and Dynamic Binding
這篇關(guān)于多態(tài)在Java的方法參數(shù)中不起作用的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,