1、Java抽象類中不能有靜態的抽象方法。
抽象類是不能實例化的,即不能被分配內存;而static修飾的方法在類實例化之前就已經別分配了內存,這樣一來矛盾就出現了:抽象類不能被分配內存,而static方法必須被分配內存。所以抽象類中不能有靜態的抽象方法。
定義抽象方法的目的是重寫此方法,但如果定義成靜態方法就不能被重寫。
2、接口中不能有靜態的抽象方法
接口中的方法也只能是 public abstract修飾的,不能加上static。接口是不能實例化的,即不能被分配內存,而static修飾的方法在類實例化之前就已經別分配了內存,這樣一來矛盾就出現了:接口不能被分配內存,而static方法必須被分配內存。所以接口中不能有靜態的抽象方法。
3、抽象類不一定有抽象方法
靜態static是屬於字節碼的。
一個抽象類可以沒有抽象方法,使用abstract只是為了不被實例化。
以上兩點可以說明,靜態方法只要有字節碼存在就可以運行,所以抽象類中可以有靜態方法。
4、靜態和抽象不能共存在方法上
因為靜態屬於字節碼,不需要對象就可以運行;而抽象方法沒有方法體,運行沒有意義,所以不能共存。