1. 程式人生 > >繼承、接口、static、abstract

繼承、接口、static、abstract

實現 之間 子類 避免 color 權限 內部類 靜態變量 extend

繼承:
1.用extends來完成繼承
2.子類可以繼承父類全部的數據域但是只有部分的數據域對子類可見
3.在java中支持單繼承
4.單繼承和多繼承的比較
(1)多繼承比單繼承能夠更好的提高代碼的復用性
(2)單繼承比多繼承能夠更好的減少方法調用的歧義
優點:
(1)提高代碼的復用性
(2)避免方法的調用產生混亂
接口:

  • 用implements關鍵字來完成類和接口之間的實現關系
  • 在java中支持的是類和接口之間的多實現
  • 在java中支持接口和接口之間的多繼承
  • 接口不能創建對象
  • 接口也沒有構造方法
  • 接口不是類
  • 在jdk1.8之前只能定義抽象方法,從jdk1.8開始,接口允許定義實體方法
  • 在接口定義的抽象方法默認是用public abstract修飾
  • 在接口中可以定義屬性,但是默認使用public static final修飾
    static:
    靜態變量:
  • 在類加載的時候加載到方法區
  • 在方法區2中賦予了默認值
  • 靜態變量是先於對象出現,所以習慣上使用類名來調用
  • 本類的所有對象儲存的是這個靜態變量在方法區中的地址,所以靜態變量是被所以對象共享
  • 靜態變量只能定義在類中不能定義到任何代碼塊中
    靜態方法:
  • 在類加載的時候加載到方法區
  • 在方法區中只儲存不執行
  • 在方法被調用的時候到棧內存中執行
  • 靜態方法先於對象出現
  • 靜態方法中不能直接使用本類中的非靜態
  • 靜態方法可以重載
  • 靜態方法能被繼承,但是不能被重寫
    <font color="green“> 靜態代碼塊
    用static{}包起來的代碼
    在類加載(第一次使用)的時候執行一次
    執行順序
    (1)父類靜態
    (2)子類靜態
    (3)父類非靜態
    (4)父類構造方法
    (5)子類非靜態方法
    (6)子類構造方法

abstract:
抽象類
1.必須被繼承
2.抽象類不能用final修飾
3.抽象類的構造方法私有,只不過這個時候需要將其內部類形式來完成繼承
4.不能被實例化,但是有構造方法
5.子類在繼承抽象類之後必須重寫其中的所有抽象方法,除非子類也是抽象類
抽象方法
1.必須被繼承重寫
2.可以重載
3.不能用static/final/private修飾
4.如果抽象方法是默認權限,要求子類必須和抽象類同包

繼承、接口、static、abstract