面向對象編程-2

一、static關鍵字

1、static變量

  • 調用方法:類名.屬性名
  • static方法不能訪問非靜態成員
  • 內存分配:

static變量與非靜態變量的區別:

區別 static變量 非靜態變量
份數 1份 每個對象1份
內存中位置 元空間(metaspace)
創建時間 加載類 創建對象
調用方式 類名.變量名 對象名.變量名
生命週期 與類一致 與對象一致

2、static方法

作用:訪問static方法/變量

調用方式:類名.方法名

static方法不可以訪問:

  1. 不可以訪問非靜態方法
  2. 不可以訪問非靜態變量
  3. 不可以訪問this

理解:加載類的時候就加載靜態變量和靜態方法,此時可能還沒有創建對象,所以非靜態變量和非靜態的方法還沒有分配空間,無法訪問

3、static代碼塊

  1. 位置:類中
  2. 數量:多個
  3. 執行順序:依次執行
  4. 執行時間:第一次加載類的時候執行,只執行一次
  5. 作用:給靜態變量賦初始值實際開發中使用比較多,一般用於執行一些全局性的初始化操作,比如創建工廠、加載數據庫初始信息。

二、package和import

1、package注意事項:

  • 包名:域名倒着寫即可,再加上模塊名,便於內部管理類。
  • 包名一律小寫。
  • 寫項目時都要加包,不要使用默認包。

2、import:便於編寫代碼,提高可維護性。

3、Idea生成文檔註釋

三、封裝性

1、權限修飾符

  • private:本類中使用
  • default:本包中使用
  • protected:本包及其他包下的子類
  • public:所有包

類的成員處理:一般用private修飾,通過set,get方法修改、獲取(boolean變量通過is獲取)

2、封裝的優點

  • 提高代碼的安全性
  • 提高代碼的複用性
  • 高內聚:封裝細節,便於修改內部代碼,提高可維護性
  • 低耦合:簡化外部調用,便於擴展協作‘

四、繼承性

1、繼承作用

  • 子類繼承父類,可以得到父類的全部屬性和方法 (除了父類的構造方法),但不見得可以直接訪問(比如,父類私有的屬性和方法)。

2、方法重寫(override)

 

修飾符

返回值

方法名 

                               參數

拋出異常

重載

無關

無關

相同

                               不同

無關

重寫

大於等於

小於等於

相同

基本數據類型:相同

引用數據類型:小於等於

小於等於