Ara*_* KT 8 java inheritance static-methods
我不是在询问界面和抽象类之间的区别.
它是单独的成功,对吗?
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();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会发生冲突?
CKi*_*ing 14
A static和非static方法不能在同一个名称中使用相同的名称class.这是因为您可以使用引用访问a static和非static方法,并且编译器将无法决定您是要调用static方法还是非static方法.
例如,请考虑以下代码:
Ov ov = new Ov();
ov.fun(); //compiler doesn't know whether to call the static or the non static fun method.
Run Code Online (Sandbox Code Playgroud)
Java可能允许static使用引用调用方法的原因是允许开发人员无缝地将static方法更改为非static方法.