本文介紹了父類和實(shí)現(xiàn)接口中同名的靜態(tài)和非靜態(tài)方法的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我不是在問接口和抽象類之間的區(qū)別。
這是單打獨(dú)斗的成功,對(duì)嗎?
interface Inter {
public void fun();
}
abstract class Am {
public static void fun() {
System.out.println("Abc");
}
}
public class Ov extends Am implements Inter {
public static void main(String[] args) {
Am.fun();
}
}
為什么會(huì)發(fā)生沖突?
推薦答案
Astatic
和非static
方法在相同的class
中不能有相同的簽名。這是因?yàn)槟梢允褂靡迷L問static
和非static
方法,而編譯器將無法決定是要調(diào)用static
方法還是非static
方法。
以下面的代碼為例:
Ov ov = new Ov();
ov.fun(); //compiler doesn't know whether to call the static or the non static fun method.
Java之所以允許使用引用調(diào)用static
方法,是為了讓開發(fā)人員可以無縫地將static
方法更改為非static
方法。
這篇關(guān)于父類和實(shí)現(xiàn)接口中同名的靜態(tài)和非靜態(tài)方法的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,