1、面向對象設計和開發的好處:
交流更加流暢、提高設計和開發效率
2、用面向對象的思想描述世界
1、發現類
2、發現類的屬性
3、發現類的方法
3、構造方法
初始化對象 1、屬性2、方法
構造方法無返回值類型
無參的構造方法:
訪問修飾符 方法名(與類名一致)(){ }---可以在創建對象的同時初始化
有參數的構造方法:
訪問修飾符 方法名(指定參數){ }
系統提供默認無參構造方法。自定義了有參構造方法後,系統默認的無參構造方法自動消失
快捷鍵---Alt+shift+s (eclipse)Alt + insert(IDEA)(筆者的筆記本是Alt+0(數字鍵盤))
作用:構造函數的最大作用就是創建對象時完成初始化,當我們在new一個對象並傳入參數的時候,會自動調用構造函數並完成參數的初始化。
4、this 關鍵字
指當前的類 本類
調用屬性 this.health=100; this.name="二哈";
調用方法 this.print();
調用構造方法 this(); this("二哈",100,100);
如果構造方法調用this,必須在第一條語句
5、方法的重載
方法名相同、參數項不相同、與返回值和訪問修飾符無關
6、static—類屬性、類變量
修飾屬性---可以通過類名直接訪問,而不需要new一個對象 類名.屬性名
修飾方法---可以直接訪問 類名.方法名();
靜態的初始化塊---static{ 邏輯語句 }---初始化對象之前優於構造方法優先執行的代碼塊
執行順序:靜態代碼塊-->構造代碼塊-->構造方法
靜態代碼塊只執行一次,構造代碼塊和構造方法每次new都執行
static---類屬性、類變量;類方法;調用方式 類名.屬性 類名.方法();歸屬於類
非static---實例屬性、實例變量;實例方法;調用方式 對象.屬性 對象.方法();歸屬於單個對象
方法裏不能定義static變量
7、封裝
概念:將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法
來實現對隱藏信息的操作和訪問
封裝的步驟:
1、修改封裝的可見性 設爲private
2、創建公有的getter/setter方法 用於屬性的讀寫
3、在getter/setter方法中加入屬性控制語句 對屬性值得合法性進行判斷
爲什麼封裝?
屬性可以隨意訪問,不合理的賦值,數據不安全
8、static變量在內存中的位置
static變量存放在方法區中(方法區又叫靜態區,跟堆一樣,被所有線程共享,方法區中包含所有
的class變量和static變量),不管創建多少個實例,靜態成員變量都會共享同一內存空間。
靜態成員變量在類被加載時會執行一次初始化,只要類加載就會初始化。