java抽象类中可以定义静态的抽象方法吗?为什么?

如题所述

不可以。
我是这样理解的:抽象类是不能实例化的,即不能被分配内存,而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。所以抽象类中不能有静态的抽象方法。
这和接口是一样的,接口中的方法也只能是 public abstract修饰的,不能加上static。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-20
  Java抽象类中不能有静态的抽象方法。

  原因:抽象类是不能实例化的,即不能被分配内存;而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。所以抽象类中不能有静态的抽象方法。

  另外,定义抽象方法的目的是重写此方法,但如果定义成静态方法就不能被重写。
第2个回答  推荐于2018-02-26
抽象类一定有抽象方法吗?我来说说吧,静态是属于字节码的;一个抽象类可以没有抽象方法,只是为了不让别人来实例化它; 以上两点可以说明,静态方法只要有字节码存在就可以运行,所以抽象类中可以有静态方法。 我再多说一嘴,静态和抽象不能共存与方法上,因为静态属于字节码,不需要对象就可以运行,而抽象方法没有方法体,运行没有意义,所以不能共存。本回答被网友采纳
第3个回答  2012-02-01
不能。
大家知道对象有两种,一种是实例对象,一种是静态对象
一个类可以有多个实例对象,但只有一个静态对象。也就是类本身
类是可以被继承的。但他的静态对象只有一个,不能被继承,他的静态方法就更不可能被继承。
所以,抽象方法是需要继承来实现,而静态方法根本不能被继承,两者互相矛盾。
所以,根本就不存在抽象静态方法。
第4个回答  2012-02-01
楼上的,静态方法能够被继承。所以你说的原因不对。

静态成员这种设计逻辑决定了不能有抽象静态方法。这个逻辑就是静态成员属于类本身,不能发生重写,而重写是实现方法体的途径。所以,如果允许有静态抽象方法,那么你很容易写出这样的调用,而该方法根本就没被实现。

MyClass.oneStaticMethod();
相似回答