局部變量和成員變量
- 定義的位置不同
定義在類中的變量是成員變量
定義在方法中或者{}語句裏面的變量是局部變量 - 在內存中的位置不同
成員變量存儲在對內存的對象中
局部變量存儲在棧內存的方法中 - 聲明週期不同
成員變量隨着對象的出現而出現在堆中,隨着對象的消失而從堆中消失
局部變量隨着方法的運行而出現在棧中,隨着方法的彈棧而消失 - 初始化不同
成員變量因爲在堆內存中,所有默認的初始化值
局部變量沒有默認的初始化值,必須手動的給其賦值纔可以使用。
基本類型和引用類型
- 基本類型作爲參數傳遞時,本質上是將基本類型參數複製一份傳遞給調用方法,當調用方法執行完,彈棧結束,程序回到主方法main,基本類型參數保持不變;
- 引用類型作爲參數傳遞時,本質上是將內存地址傳遞給調用方法,最終導致主方法和調用方法無論哪一個改變了引用值,都將改變引用類型參數;
面向對象特徵
封裝
封裝的表現
- 方法是一種基本的封裝;
- 類也是一種封裝;
封裝的優勢
1. 提高代碼的複用性;
2. 提高代碼的安全性;
3. 隱藏實現細節,但是需要提供可以訪問的方式;
注意:
1. 定義類中的屬性時,應當將屬性私有化,用private修飾;
2. 被private修飾的變量,類外無法使用,可提供公共訪問方式(方法),讓外類修改和獲取(get,set);
this關鍵字
當方法中局部變量和成員變量之間有重複時候,在方法中調用成員變量需要在變量名前加上關鍵字 this.
注意:
1. this代表對象,哪個對象調用了this所在的方法,this就代表哪個對象;
繼承
繼承的格式
class 子類 extends 父類 {}
繼承的注意事項
-
在Java中,類只支持單繼承,不允許多繼承,也就是說一個類只能有一個直接父類,例如下面這種情況是不合法的;
-
多個類可以繼承一個父類,例如下面這種情況是允許的;
-
在Java中,多層繼承是可以的,即一個類的父類可以再去繼承另外的父類,例如C類繼承自B類,而B類又可以去繼承A類,這時,C類也可稱作A類的子類。下面這種情況是允許的。
class A{}
class B extends A{}
class C extends B{}
- 在Java中,子類和父類是一種相對概念,也就是說一個類是某個類父類的同時,也可以是另一個類的子類。
成員變量和方法的注意事項
- 父類中的成員變量是非私有的,子類中可以直接訪問,若父類中的成員變量私有了,子類是不能直接訪問的。
- 當子父類中出現了同名成員變量時,在子類中若要訪問父類中的成員變量,必須使用關鍵字super來完成。
個人學習記錄,難免錯誤,望大神指正。