Java中抽象類和接口中均不能定義靜態的抽象方法


1、Java抽象類中不能有靜態的抽象方法。

  抽象類是不能實例化的,即不能被分配內存;而static修飾的方法在類實例化之前就已經別分配了內存,這樣一來矛盾就出現了:抽象類不能被分配內存,而static方法必須被分配內存。所以抽象類中不能有靜態的抽象方法。

  定義抽象方法的目的是重寫此方法,但如果定義成靜態方法就不能被重寫。

2、接口中不能有靜態的抽象方法

  接口中的方法也只能是 public abstract修飾的,不能加上static。接口是不能實例化的,即不能被分配內存,而static修飾的方法在類實例化之前就已經別分配了內存,這樣一來矛盾就出現了:接口不能被分配內存,而static方法必須被分配內存。所以接口中不能有靜態的抽象方法。

3、抽象類不一定有抽象方法

  靜態static是屬於字節碼的。

  一個抽象類可以沒有抽象方法,使用abstract只是為了不被實例化。

  以上兩點可以說明,靜態方法只要有字節碼存在就可以運行,所以抽象類中可以有靜態方法。

4、靜態和抽象不能共存在方法上

  因為靜態屬於字節碼,不需要對象就可以運行;而抽象方法沒有方法體,運行沒有意義,所以不能共存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM