为什么类静态方法被继承,而不是接口静态方法?
我理解在Java中,静态方法就像实例方法一样被继承,不同之处在于当它们被重新声明时,父实现是隐藏的而不是被覆盖的。好吧,这是有道理的。但是,Java教程指出:
接口中的静态方法永远不会被继承。
为什么?常规方法和接口静态方法有什么区别?
让我澄清一下我说静态方法可以继承的意思:
class Animal {
public static void identify() {
System.out.println("This is an animal");
}
}
class Cat extends Animal {}
public static void main(String[] args) {
Animal.identify();
Cat.identify(); // This compiles, even though it is not redefined in Cat.
}
然而
interface Animal {
public static void identify() {
System.out.println("This is an animal");
}
}
class Cat implements Animal {}
public static void main(String[] args) {
Animal.identify();
Cat.identify(); // This does not compile, because interface static methods do not inherit. (Why?)
}