Interface和abstract类不能含有Static方法

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

你可能感兴趣的:(abstract,static,JavaSE)