【零基礎(chǔ) 快速學(xué)Java】韓順平 零基礎(chǔ)30天學(xué)會Java

訪問修飾符
- java提供四種訪問控制修飾符號控制方法和屬性的訪問權(quán)限
1.公開級別:用public修飾,對外公開。
2.受保護(hù)級別:用protected修飾,對子類和同一個包中的類公開。
3.默認(rèn)級別:沒有修飾符號,向同一個包的類公開。
4.私有級別:用private修飾,只有類本身可以訪問,不對外公開。
面向?qū)ο缶幊?繼承
- 繼承的深入討論/細(xì)節(jié)問題
1.子類繼承了所有的屬性和方法,但是私有屬性和方法不能在子類里直接訪問,要通過公共的方法去訪問。
二,對象的多態(tài)
(1)一個對象的變異類型和運(yùn)行類型可以不一致。
(2)編譯類型在定義對象是,就確定了,不能改變。
(3)運(yùn)行類型是可以改變的。
(4)編譯類型看 = 的左邊,運(yùn)行類型看 = 的右邊。
- 調(diào)用對象方法時,依照的是運(yùn)行類型。
- 父類可以指向(接收)子類的對象。
多態(tài)的向上轉(zhuǎn)型
- 本質(zhì):父類的引用指向了子類的對象。
- 語法:父類類型 引用名 = new 子類類型();
- 特點(diǎn):編譯類型看左邊,運(yùn)行類型看右邊。
可以調(diào)用父類中的所有成員(需遵守訪問權(quán)限)
不能調(diào)用子類中的特有成員。(因?yàn)樵诰幾g階段,能調(diào)用那些成員,是由編譯器決定的。)
最終運(yùn)行效果看子類的最終實(shí)現(xiàn)。(調(diào)用方法是,按照從子類開始查找方法。)
------------------------------------------------------------
多態(tài)的向下轉(zhuǎn)型
- 語法:子類類型 引用名 = (子類類型)父類引用;
- 只能強(qiáng)轉(zhuǎn)父類的引用,不能強(qiáng)轉(zhuǎn)父類的對象。
------------------------------------------------------------
屬性重寫問題
1、屬性沒有重寫之說,屬性的值看編譯類型。
eg:
class Base {//父類
int count = 10;//屬性
}
class Sub extends Base {//子類
int count = 20;//屬性
}
Bse base = new Sub();
bace.count;//10
2、instanceof 比較操作符,用于判斷對象的運(yùn)行類型是否為 xx 類型或 xx 類型的子類型。
-----------------------------------------------------------
調(diào)用屬性看編譯類型,調(diào)用方法看運(yùn)行類型。
-----------------------------------------------------------
動態(tài)綁定機(jī)制
- 當(dāng)調(diào)用對象方法的時候,該方法會和該對象的內(nèi)存地址/運(yùn)行類型綁定。
- 當(dāng)調(diào)用對象屬性時,沒有動態(tài)綁定機(jī)制,哪里聲明,哪里使用。
=================================
三,多態(tài)的應(yīng)用
多態(tài)數(shù)組
=================================
四,Object類詳解
equals方法
== 是一個比較運(yùn)算符
1.==:既可以判斷基本數(shù)據(jù)類型,又可以判斷引用類型。
2.==:如果判斷基本類型,判斷的是值是否相等。
3.==:如果判斷引用類型,判斷的是地址是否相等,即判定是不是同一個對象。
4.equals:是Object類中的方法,只能判斷引用類型。
- hashCode方法
- 提高具有哈希結(jié)構(gòu)的容器的效率。
- 兩個引用,如果指向的是同一個對象,則哈希值肯定是一樣的!
- 兩個引用,如果指定的是不同對象,則哈希值是肯定不一樣的。
- 哈希值主要是根據(jù)地址號來的,不能將哈希值等價于地址。