1、this 用于區別成員變量與局部變量重名
????在成員變量前面添加 this.
2、構造方法
A 構造方法概述:??
? ? 作用:為了給對象的屬性初始化
? ? 特點:方法名與類名相同,沒有返回值,不需要void
? ? 注意:構造方法不能用對象調用,在創建對象的時候構造方法與已經執行。
B 構造方法重載:
????方法名相同,與返回值類型無關(構造方法沒有返回值),只看參數列表
????注意:如果不寫構造方法,系統會自動給出空參構造。如果要給出有參構造的時候,必須要先給出空參構造。
3、static 關鍵字
*A:static關鍵字的特點
??? * a:隨著類的加載而加? * b:優先于對象存在? ?* c:被類的所有對象共享? ?* d:可以通過類名調用
? ? ?如果一個成員變量被所有對象共享,那么就可以把成員變量設置為靜態static
*B 靜態的注意事項
????*a 靜態方法中沒有this關鍵字。
?????????????靜態是隨著類的加載而加載,this是隨著對象的創建而存在。靜態比對象先存在。
? ? *b? 靜態方法只能訪問靜態的成員變量和靜態的成員方法
*C?靜態變量和成員變量的區別
?????靜態變量也叫類變量? 成員變量也叫對象變量
? ??*A:所屬不同
??????? *靜態變量屬于類,所以也稱為為類變量
??????? *成員變量屬于對象,所以也稱為實例變量(對象變量)
????*B:內存中位置不同
??? ????*靜態變量存儲于方法區的靜態區
??? ????*成員變量存儲于堆內存
????*C:內存出現時間不同
??? ????*靜態變量隨著類的加載而加載,隨著類的消失而消失
??? ????*成員變量隨著對象的創建而存在,隨著對象的消失而消失
????*D:調用不同
??? ????*靜態變量可以通過類名調用,也可以通過對象調用
??? ????*成員變量只能通過對象名調用
5、代碼塊
????A? 代碼塊分類:
????根據其位置和聲明的不同,可以分為局部代碼塊,構造代碼塊,靜態代碼塊,同步代碼塊(多線程講解)
????B:常見代碼塊的應用
??????? * a:局部代碼塊:? ?在方法中出現;限定變量生命周期,及早釋放,提高內存利用率
??????? * b:構造代碼塊 (初始化塊): 在類中方法外出現;多個構造方法中相同的代碼存放到一起,每次調用構造都執行,并且在構造方法前執行
??????? * c:靜態代碼塊: 在類中方法外出現,并加上static修飾;用于給類進行初始化,隨著類的加載而加載,在加載的時候就執行(優先于主方法執行),且只執行一次。? ? *一般用于加載驅動
6、繼承
?????A?:繼承的好處:* a:提高了代碼的復用性? * b:提高了代碼的維護性? ?* c:讓類與類之間產生了關系,是多態的前提
????B? :繼承的弊端:* 類的耦合性增強了。*開發的原則:高內聚,低耦合。*耦合:類與類的關系? *內聚:就是自己完成某件事情的能力
????C :繼承的特點: JAVA中只支持單繼承(只有一個爹),支持多層繼承(有祖宗)。
????D:? 繼承的注意事項: *a:子類只能繼承父類所有非私有的成員(成員方法和成員變量)? ?* b:子類不能繼承父類的構造方法,但是可以通過super關鍵字去訪問父類構造方法。? * c:不要為了部分功能而去繼承
????E:? 繼承中成員變量之間的關系: * 同名變量:就近原則
????F: 繼承中構造方法的關系:
????????* 子類中所有的構造方法默認都會訪問父類中空參數的構造方法。* 因為子類會繼承父類中的數據,可能還會使用父類的數據。所以,子類初始化之前,一定要先完成父類數據的初始化。
?????????每一個構造方法的第一條語句默認都是:super() ,即使不寫,系統會默認加上,用來訪問父類中的空參構造。
? ????? 如果父類中沒有給出無參構造,同時又寫了有參構造,則會出現問題
????G: 繼承中成員方法之間的關系:
????????* 重寫: 子父類出現了一模一樣的方法? ? ?* 當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法。這樣,即沿襲了父類的功能,又定義了子類特有的內容。
????????*方法重寫注意事項:
? ????? ? ? ?a:父類中私有方法不能被重寫 :因為父類私有方法子類根本就無法繼承
? ????? ? ? ?b:子類重寫父類方法時,訪問權限不能更低,最好就一致
? ? ???? ? ?c:父類靜態方法,子類也必須通過靜態方法進行重寫。 其實這個算不上方法重寫,靜態只能覆蓋靜態
????? ? ? ? ?子類重寫父類方法的時候,最好聲明一模一樣。
???? ?H :Override(重寫)和Overload(重載)的區別?
? ??????????? ?overload可以改變返回值類型,只看參數列表
????? ? ? ? ? ?方法重寫:子類中出現了和父類中方法聲明一模一樣的方法。與返回值類型有關,返回值是一致(或者是子父類)的
????? ? ? ? ? ?方法重載:本類中出現的方法名一樣,參數列表不同的方法。與返回值類型無關。
? ? ? ? ? ? ? *子類對象調用方法的時候,先找子類本身,再找父類。
7、this 與super
????*A:this和super都代表什么
??? ????* this:代表當前對象的引用,誰來調用我,我就代表誰
??? ????* super:代表當前對象父類的引用
????*B:this和super的使用區別
??? ????* a:調用成員變量
??????? ????* this.成員變量 調用本類的成員變量,也可以調用父類的成員變量(繼承)
??????? ????* super.成員變量 調用父類的成員變量
??? ????* b:調用構造方法
??????????? * this(...) 調用本類的構造方法
??????????? * super(...)??? 調用父類的構造方法
??????? * c:調用成員方法
??????????? * this.成員方法 調用本類的成員方法,也可以調用父類的方法(繼承)
??????? ????* super.成員方法 調用父類的成員方法????
????注意:在一個構造方法中不能同時寫this(...)?和super(...)?。? this(...) 和super(...) 必須卸載第一條語句。
8、final
????A:概述:
????B:final修飾特點
??? ????*修飾類,類不能被繼承
??? ????*修飾變量,變量就變成了常量,只能被賦值一次
??? ????*修飾方法,方法不能被重寫
? ? ????*修飾引用數據類型:不能改變其地址值,但是可以改變其屬性值
? ? ????*修飾基本類型變量:不能改變其值。
9、多態(polymorphic)
????A:概述:事物存在多種形態
? ? B:多態前提:? 要有繼承、方法重寫、父類引用指向子類對象
????C:成員變量:編譯看左邊(父類),運行看左邊(父類)
? ? ? ? ? ?成員方法:編譯看左邊(父類),運行看右邊(子類)? ?動態綁定。
? ? ? ? 靜態成員方法:編譯看左邊(父類),運行看左邊(父類) 靜態和類相關,不算重寫,看左邊
????D:多態的好處:提高了代碼的維護性,提高了代碼的擴展性。? 把類當做參數的時候多態非常好,擴展性強。
10、抽象 abstract
? ? 抽象類特點:
? ? ? ? 抽象類和抽象方法必須用abstract修飾。?
????????抽象類不一定有抽象方法,有抽象方法的類一定是抽象類或者是接口。
?????????抽象類不能實例化,按照多態有子類實例化。
????????抽象類的子類要么是抽象類,要么重寫抽象類中的所有抽象方法。
????????抽象類中成員變量可以是常量也可以是變量。
? ? ? ? 抽象abstract 不能和static 、private、final共存(作用矛盾)
11、接口
接口特點:
? ? ? ? 用關鍵字interface表示: interface 接口名{}
? ? ? ? 類實現接口 :class 類名 implements 接口名{}
? ? ? ? 接口不能實例化,只能用多態的方式實例化
? ? ? ? 接口的子類可以是具體類,要重寫接口中的所有抽象方法。? ?可以是抽象類,但意義不大。
????成員特點:
? ? ? ? 成員變量只能是常量,并且是靜態的公共的。 public static final
? ? ? ? 接口沒有構造方法。 成員方法只能是抽象方法。 public abstract
12、類與類,類與接口,接口與接口
? ? 類與類:繼承關系,只能是單繼承關系,可以多層繼承
? ? 類與接口:實現關系,可以是單實現,可以是多實現,并且可以繼承一個類的同時實現多個接口
? ? 接口與接口:繼承關系,可以單繼承可以多繼承
13、權限修飾符
? ? ? ? ? ? ? ? ? ? ? 本類??? 同一個包下(子類和無關類)?? 不同包下(子類)? 不同包下(無關類)
??????? private? ? ?Y??????
??????? 默認? ? ? ? ?Y? ? ? ? ? ? ? ? ? ? ? ?Y
??????? protected Y? ? ? ? ? ? ? ? ? ? ? ? Y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Y
??????? public? ? ? ?Y? ? ? ? ? ? ? ? ? ? ? ? ?Y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Y? ? ? ? ? ? ? ? ? ? ?Y
14、內部類私有
????A:內部類訪問特點
??????? * a:內部類可以直接訪問外部類的成員,包括私有。
??????? * b:外部類要訪問內部類的成員,必須創建對象。
??????? *外部類名.內部類名 對象名 = 外部類對象.內部類對象;
? ? B:成員內部類私有使用