我可以用Java规定一个静态方法吗?

时间:2015-09-09 18:55:23

标签: java inheritance interface java-8 abstract-class

它在锡上说的是什么。如果之前有人问过,道歉和链接会受到赞赏,只是在挖掘之后我找不到任何东西。

鉴于接口不允许像static这样的关键字,以及"抽象静态"在Java中还没有(但是)(参见这里的讨论,Why can't static methods be abstract in Java),我有什么方法可以说" Foo的每个后代都有一个有保证的静态方法Bar" ?

3 个答案:

答案 0 :(得分:3)

  

Foo的每个后代都有一个保证静态方法Bar

不是真的,如果使用default方法,您只能覆盖default方法(如果在儿童中使用),而不是每个孩子都会在interface中进行常规实施。此外,default方法 static

另一方面,static中允许使用Java-8方法,但您可以使用接口名称直接访问它,但这并不意味着只有接口的子项具有该接口名称static方法。但是,对于可以导入或到达界面的每个类,都可以访问此static方法。

答案 1 :(得分:1)

大多数OO语言都接受正常的非静态虚拟mehotd。一些,也许是利基,即像Delphi一样有虚拟静态方法。

在派生对象中可以调用静态方法,并且足够用于对象类。许多人没有这个概念。

答案 2 :(得分:1)

您的问题在java语言中不是问题。你无法规定'子类有静态方法x()和,即使你可以,也没有语言元素允许你实际调用子类静态方法(除非通过限定它与儿童阶级文字,这违背了目的)。

这看起来像一个XY问题。更好地询问您打算解决的问题。