为什么静态方法不能在Java中抽象
问题是在Java中为什么我不能定义一个抽象的静态方法? 例如
abstract class foo {
abstract void bar( ); // <-- this is ok
abstract static void bar2(); //<-- this isn't why?
}
因为“抽象”意味着:“不实现任何功能”,“静态”意味着:“即使没有对象实例,也有功能”。 这是一个合乎逻辑的矛盾。
糟糕的语言设计。 直接调用静态抽象方法比创建仅用于抽象方法的实例要有效得多。 当使用抽象类作为enum无法扩展的解决方法时尤其如此,这是另一个糟糕的设计示例。 希望他们在下一个版本中解决这些限制。
你不能重写一个静态方法,所以将其抽象化将毫无意义。 而且,抽象类中的静态方法将属于该类,而不是重写类,因此无论如何都不能使用。
链接地址: http://www.djcxy.com/p/20711.html