Ado*_*ali 6 java methods static interface
我找不到任何好的来源来解释原因:
abstract class AA {
public static void log() {}
}
class BB extends AA {
public void log() {} //error
}
Run Code Online (Sandbox Code Playgroud)
interface CC {
public static void log() {}
}
class DD implements CC {
public void log() {} //Ok
}
Run Code Online (Sandbox Code Playgroud)
如果子类定义的静态方法与其父类中的另一个静态方法具有相同的签名,则子类中的方法将隐藏超类中的方法。这与通过以下两种方式重写实例方法不同:
对于接口来说,接口中的静态方法是不被继承的。因此,从技术上讲,这不是覆盖。在您的示例中,您可以log()从 class调用DD,也可以log()从 interface调用CC(在这种情况下,您需要使用接口的名称来调用它:)CC.log()。它们是单独的方法。
这是关于重写方法的良好资源,涵盖类中的静态方法和实例方法以及接口中的静态方法。
| 归档时间: |
|
| 查看次数: |
4718 次 |
| 最近记录: |