java抽象类中可以定义静态的抽象方法吗?为什么?
10个回答
2015-10-20 · IT·互联网经理人培训口碑品牌
关注
展开全部
Java抽象类中不能有静态的抽象方法。
原因:抽象类是不能实例化的,即不能被分配内存;而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。所以抽象类中不能有静态的抽象方法。
另外,定义抽象方法的目的是重写此方法,但如果定义成静态方法就不能被重写。
原因:抽象类是不能实例化的,即不能被分配内存;而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。所以抽象类中不能有静态的抽象方法。
另外,定义抽象方法的目的是重写此方法,但如果定义成静态方法就不能被重写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
抽象类一定有抽象方法吗?我来说说吧,静态是属于字节码的;一个抽象类可以没有抽象方法,只是为了不让别人来实例化它; 以上两点可以说明,静态方法只要有字节码存在就可以运行,所以抽象类中可以有静态方法。 我再多说一嘴,静态和抽象不能共存与方法上,因为静态属于字节码,不需要对象就可以运行,而抽象方法没有方法体,运行没有意义,所以不能共存。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能。
大家知道对象有两种,一种是实例对象,一种是静态对象
一个类可以有多个实例对象,但只有一个静态对象。也就是类本身
类是可以被继承的。但他的静态对象只有一个,不能被继承,他的静态方法就更不可能被继承。
所以,抽象方法是需要继承来实现,而静态方法根本不能被继承,两者互相矛盾。
所以,根本就不存在抽象静态方法。
大家知道对象有两种,一种是实例对象,一种是静态对象
一个类可以有多个实例对象,但只有一个静态对象。也就是类本身
类是可以被继承的。但他的静态对象只有一个,不能被继承,他的静态方法就更不可能被继承。
所以,抽象方法是需要继承来实现,而静态方法根本不能被继承,两者互相矛盾。
所以,根本就不存在抽象静态方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的,静态方法能够被继承。所以你说的原因不对。
静态成员这种设计逻辑决定了不能有抽象静态方法。这个逻辑就是静态成员属于类本身,不能发生重写,而重写是实现方法体的途径。所以,如果允许有静态抽象方法,那么你很容易写出这样的调用,而该方法根本就没被实现。
MyClass.oneStaticMethod();
静态成员这种设计逻辑决定了不能有抽象静态方法。这个逻辑就是静态成员属于类本身,不能发生重写,而重写是实现方法体的途径。所以,如果允许有静态抽象方法,那么你很容易写出这样的调用,而该方法根本就没被实现。
MyClass.oneStaticMethod();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询