java抽象类中可以定义静态的抽象方法吗?为什么?
发布网友
发布时间:2022-04-24 19:41
我来回答
共5个回答
热心网友
时间:2023-10-08 23:51
不可以。
我是这样理解的:抽象类是不能实例化的,即不能被分配内存,而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。所以抽象类中不能有静态的抽象方法。
这和接口是一样的,接口中的方法也只能是 public abstract修饰的,不能加上static。
热心网友
时间:2023-10-08 23:52
Java抽象类中不能有静态的抽象方法。
原因:抽象类是不能实例化的,即不能被分配内存;而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。所以抽象类中不能有静态的抽象方法。
另外,定义抽象方法的目的是重写此方法,但如果定义成静态方法就不能被重写。
热心网友
时间:2023-10-08 23:52
抽象类一定有抽象方法吗?我来说说吧,静态是属于字节码的;一个抽象类可以没有抽象方法,只是为了不让别人来实例化它; 以上两点可以说明,静态方法只要有字节码存在就可以运行,所以抽象类中可以有静态方法。 我再多说一嘴,静态和抽象不能共存与方法上,因为静态属于字节码,不需要对象就可以运行,而抽象方法没有方法体,运行没有意义,所以不能共存。
热心网友
时间:2023-10-08 23:53
不能。
大家知道对象有两种,一种是实例对象,一种是静态对象
一个类可以有多个实例对象,但只有一个静态对象。也就是类本身
类是可以被继承的。但他的静态对象只有一个,不能被继承,他的静态方法就更不可能被继承。
所以,抽象方法是需要继承来实现,而静态方法根本不能被继承,两者互相矛盾。
所以,根本就不存在抽象静态方法。
热心网友
时间:2023-10-08 23:54
楼上的,静态方法能够被继承。所以你说的原因不对。
静态成员这种设计逻辑决定了不能有抽象静态方法。这个逻辑就是静态成员属于类本身,不能发生重写,而重写是实现方法体的途径。所以,如果允许有静态抽象方法,那么你很容易写出这样的调用,而该方法根本就没被实现。
MyClass.oneStaticMethod();