为什么静态方法在Java中不能是抽象的?
2022-08-31 04:11:28
问题是在Java中,为什么我不能定义一个抽象的静态方法?例如
abstract class foo {
abstract void bar( ); // <-- this is ok
abstract static void bar2(); //<-- this isn't why?
}
问题是在Java中,为什么我不能定义一个抽象的静态方法?例如
abstract class foo {
abstract void bar( ); // <-- this is ok
abstract static void bar2(); //<-- this isn't why?
}
因为“抽象”的意思是:“不实现任何功能”,“静态”意味着:“即使你没有对象实例,也有功能”。这是一个逻辑上的矛盾。
糟糕的语言设计。直接调用静态抽象方法比创建仅用于使用该抽象方法的实例要有效得多。当使用抽象类作为枚举无法扩展的解决方法时尤其如此,这是另一个糟糕的设计示例。希望他们在下一个版本中解决这些限制。