Interface和abstract类不能含有Static方法

本文探讨了Java中抽象类与接口为何不能包含static方法,解释了static与abstract方法之间的冲突,并讨论了接口与抽象类的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

interface & abstract class 不能包含static 方法! 
sun
这么做的机是什 
好像大名鼎鼎的 thinking in java中也没有解

abstract class A { 
static void doSomething() ; 

不能通过编译是因你没有定doSomething 的方法体,比如该语句最后你加上{},就可以了用了.这时doSomething A的一个方法
如果你想把它定义为一个抽象方法那你必它的候使用关键abstract.如果你想定一个方法同使用关键abstract static 不到的.你想想,static 方法是方法,它是不允覆写(override)的(所以必在定实现),而abstract方法,是只有特征,没有实现的方法,是必由子来覆写的,两者是水火不相容的,sun当然不会允一个同时为abstract static 的方法。 

至于接口和抽象类还有点不同,因它是粹的设计,不及任何的实现,它所有的方法都是共有和抽象的(关键publicabstract可以省略)所以接口不能有static方法(方法),上面提到的static void doSomething(){};在抽象中可以存在,但是在接口中是不允的。 

便提以下,在接口中可以定staic的属性的。实际上接口中定的属性必static,finalpublic的(因是必的,所以3关键字也都是可以省略的)
一:static不能和abstract 
二:interface是更抽象的抽象,接口的所有方法都未实现,接口的方法默认为public abstract ,根据原一,当然不能是static了; 
三:抽象是部分实现的,其中nonabstract方法可以staticabstract方法不能static
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值