为什么我们不应该为单个方法使用静态和抽象?

Gur*_*lki 3 java

为什么我们不应该为单个方法使用静态和抽象?

Jon*_*onH 7

定义static关键字,以便可以通过类名而不是对象调用方法.这意味着该方法必须有某种定义.但抽象意味着你没有任何有关该方法的细节,正如它所说的那样**Abstract**.继承或扩展类时,可以定义方法.

想想一个界面.

如果您在抽象类中询问静态方法,那就是另一个故事.抽象类基本上是一个接口,只包含一个say函数的模板,您必须稍后通过继承/扩展该类来实现.一旦扩展该类,静态方法就不会出现(默认情况下,除非访问修饰符是公共/受保护的).


KLE*_*KLE 5

一个静态方法不继承.因此,将其抽象化是一种废话.


Tof*_*eer 5

abstract关键字意味着子类必须覆盖该方法 - 这是(Java)支持多态的方式之一.如果您想使子类不能覆盖该方法,则将其标记为final.所以不可能有一个"抽象的最终"方法,因为它们彼此完全相反.

static关键字也意味着final - 所有静态方法也都是final.因此,不可能有一个静态和抽象的方法,因为你可以创建一个抽象和最终的方法.

静态最终的原因是它绑定到类而不是实例.这意味着编译器在编译时而不是运行时查找它以确定调用哪个方法.这是什么原因?Java的设计者做出的任意决定 - 他们可以允许静态方法被覆盖,但决定不这样做.不幸的是,我没有任何特别的见解,为什么选择一个在另一个上面.