面向對象
面向過程
- 關注點在過程,用過程中的一個個方法完成功能。
面向對象
- 設計出發點:更能直接描述問題域中,客觀存在的事務
- 基本思想: 從現實世界中客觀存在的事物出發來構造軟件系統,並在系統的構造中儘可能運用人類自然思維方式
- 理解:
- 屬性和方法從屬於對象
- 按照對象組織代碼,更符合對現實問題的抽象
- 有利於代碼的封裝,複用,擴展和維護
類和對象
對象:是用計算機語言對問題域中事物的描述。
類: 描述同一類型的對象的抽象的概念,是對象的模板的描述。
類是模板,對象是一個實例
變量
- 成員變量與局部變量的區別
- 在類中的位置不同
- 成員變量:方法中
- 局部變量:類中,方法外
- 在內存堆中
- 成員變量:在內存堆中
- 局部變量: 在內存棧中
- 生命週期不同
- 成員變量: 靜態隨類,非靜態隨對象
- 局部變量:隨方法
- 初始值不同
- 成員變量:有默認初始值
- 局部變量:沒有默認值,必須定義,賦值,然後才能使用
- 修飾符不同
- 成員變量:可以有修飾符
- 局部變量: 不能有修飾符
- 作用域
- 成員變量:定義開始到類結束的位置
- 局部變量:定義開始到方法結束的位置
- 在類中的位置不同
方法
解決一類問題的代碼的有序組合。
- 重複執行的代碼,命名爲一個方法,方便重複使用
- 方便自上而下解決問題
- 方便代碼維護
語法格式
修飾符 返回值類型 方法名 (參數類型 參數名){
執行語句
return 返回值
}
修飾符
- 權限修飾符
- 靜態修飾符
- 最終修飾符
參數的傳遞
- 把指定的數值,傳遞給方法中的參數
- 定義方法時,參數列表中的變量,形式參數
- 調用方法時,傳入給方法的數值,實際參數
- 形式參數的類型 大於等於 實際參數的類型
- 返回值類型 大於等於 方法內return的數據類型
值傳遞和引用傳遞
基本類型作爲參數傳遞時
- 值傳遞,傳遞的是值的副本,不會改變實際參數的值
- 形式參數的改變不會影響實際參數的值
引用數據類型作爲傳輸傳遞時
- 引用傳遞,傳遞的是引用,通過引用會改變實際參數的值
- 形式參數的改變會影響實際參數的值
差別原因是
- 基本數據類型,實際值存放在內存棧中,直接操作實際值
- 值傳遞時,改變的是副本的值不會改變原始數據
- 引用數據類型,引用存放在內存棧中,實際值存放在內存堆中,會根據引用找到內存堆中的實際值,對實際值進行操作
- 引用傳遞時,是將形式參數建立引用聯繫到內存堆中的實際值,這樣實際參數和形式參數都引用到同一個內存堆中的實際值,因此任何一個改變也會引起另一個改變。
方法重載
一個類中定義多個名稱相同的方法,但是參數的類型或者個數必須不同
- 同一個類中,方法名必須相同
重載方法的參數必須不同
- 參數個數不同
- 參數類型不同
- 參數順序不同
重載只與方法名和參數類型有關,與返回值無關
- 重載與具體的變量標識符無關
遞歸結構
- 自己調用自己,
- 任何可用遞歸解決的問題都可用迭代解決
- 結構:
- 遞歸頭: 解答什麼時候不調用自身方法
- 遞歸體: 解答什麼時候需要調用自身的方法
- 缺陷
- 佔用內存和耗用多,效率低