定义static关键字,以便可以通过类名而不是对象调用方法.这意味着该方法必须有某种定义.但抽象意味着你没有任何有关该方法的细节,正如它所说的那样**Abstract**.继承或扩展类时,可以定义方法.
想想一个界面.
如果您在抽象类中询问静态方法,那就是另一个故事.抽象类基本上是一个接口,只包含一个say函数的模板,您必须稍后通过继承/扩展该类来实现.一旦扩展该类,静态方法就不会出现(默认情况下,除非访问修饰符是公共/受保护的).
abstract关键字意味着子类必须覆盖该方法 - 这是(Java)支持多态的方式之一.如果您想使子类不能覆盖该方法,则将其标记为final.所以不可能有一个"抽象的最终"方法,因为它们彼此完全相反.
static关键字也意味着final - 所有静态方法也都是final.因此,不可能有一个静态和抽象的方法,因为你可以创建一个抽象和最终的方法.
静态最终的原因是它绑定到类而不是实例.这意味着编译器在编译时而不是运行时查找它以确定调用哪个方法.这是什么原因?Java的设计者做出的任意决定 - 他们可以允许静态方法被覆盖,但决定不这样做.不幸的是,我没有任何特别的见解,为什么选择一个在另一个上面.
| 归档时间: |
|
| 查看次数: |
3084 次 |
| 最近记录: |