1. 程式人生 > >Interface和abstract類不能含有Static方法

Interface和abstract類不能含有Static方法

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關鍵字也都是可以省略的)