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 的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值