繼承
1. 繼承的基礎語法
在程序設計中边涕,如果有多個具有邏輯關聯(lián)的類蚊逢,具有相同的特性和行為(屬性和方法)聂宾。那么我們可以將這些相同的部分提取出來夕膀,做成另外的一個類虚倒。
被提取出來的類,稱作是 -- 父類店诗,基類裹刮,超類
那些被提取共同點音榜,具有邏輯關聯(lián)的類庞瘸,被稱作 -- 子類,派生類
他們之間的關系赠叼,叫做 -- 繼承
// Dog類繼承自Animal類
// Animal是父類
// Dog是子類
class Dog extends Animal {}
2. 繼承的基本特點
1擦囊、子類可以訪問父類中能看得到的所有成員。
這里的所謂的“能看得到的”嘴办,指的是訪問權限修飾符的限定瞬场。
2、Java語言是單繼承的涧郊。一個類只能有一個父類贯被、但是一個類可以有多個子類。
多繼承容易出現(xiàn)“二義性”的問題妆艘,所以很多語言都摒棄掉多繼承彤灶。但是會通過其他的方式間接的實現(xiàn)多繼承
例如:在Java中,通過“接口”來間接實現(xiàn)多繼承批旺。
3幌陕、構造方法不能被繼承。
什么情況下使用繼承
如果一個類提供的功能已經(jīng)不能滿足我們的需求汽煮,此時可以考慮使用繼承來為這個類添加功能搏熄。
3. 繼承中的構造方法
1棚唆、構造方法是不能被繼承的
2、一個對象在堆上開辟的空間心例,其實可以分為兩大部分:父類繼承成員 和 子類特有成員
一個對象在進行實例化的時候宵凌,先實例化從父類繼承到的部分,再實例化子類特有的部分
實例化父類部分的時候止后,需要調用父類中的構造方法摆寄,默認調用父類中的無參構造
3、如果父類中沒有無參構造方法坯门,則子類對象將不能正常的實例化
1微饥、給父類添加一個無參構造
2、在子類的構造方法中古戴,手動調用父類中存在的構造方法
? super()
4. 訪問權限修飾符
用來修飾屬性欠橘、方法、類的一些修飾符现恼,使被修飾的部分具有一定的訪問權限肃续。
訪問權限:屬性、方法叉袍、類可以在哪些范圍被訪問始锚。
訪問權限 | 修飾符 | 可以修飾 |
---|---|---|
公開權限 | public | 類、方法喳逛、屬性 |
保護權限 | protected | 方法瞧捌、屬性 |
包權限 | 類、方法润文、屬性 | |
私有權限 | private | 方法姐呐、屬性 |
訪問權限 | 當前類 | 同包 | 跨包子類 | 跨包不同類 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default/package | √ | √ | × | × |
private | √ | × | × | × |
訪問權限大小關系: public > protected > default > private
5. 方法的重寫 Override
是繼承中最重要的部分。也是多態(tài)的基礎典蝌。
重寫曙砂,就是在子類中,對從父類繼承到的方法進行重新實現(xiàn)骏掀。
重寫鸠澈,又叫做覆寫,用子類的實現(xiàn)覆蓋掉父類的實現(xiàn)截驮。
重寫中需要注意的問題:
@Override
這是一個注解笑陈,附著在修飾的地方,可以做一些簡單的邏輯侧纯。
用來修飾一個方法新锈,作用是對這個方法做一個重寫的驗證,驗證這個方法是不是一個重寫的方法眶熬。
在進行方法重寫的時候妹笆,@Override不是一個必須要添加的注解块请,但是實際開發(fā)中,我們一般都是會加上的拳缠。
重寫對方法的返回值墩新、訪問權限的要求
1、對訪問權限的要求:子類方法的訪問權限要大于等于父類方法的訪問權限窟坐。
2海渊、對返回值的要求:子類方法的返回值類型可以和父類方法保持一致,也可以是父類方法返回值類型的子類型哲鸳。
3臣疑、重寫對方法的異常拋出類型也有要求,這個要求徙菠,后面在異常中講讯沈。
6. final關鍵字
final 關鍵字可以用來修飾什么?分別具有什么樣的意義婿奔?
1缺狠、修飾變量,表示值不可以改變萍摊,是一個常量
2挤茄、修飾類,表示這個類是一個最終類冰木,無法被繼承
3穷劈、修飾方法,表示是一個最終方法片酝,不能被重寫
7. Object類
Object類是Java中所有的類的根類囚衔。所有的類都直接或者間接的繼承自Object。
這個類中定義了很多的每一個類都能使用到的方法雕沿。
- toString()
- 返回一個當前對象的字符串表示形式。
- 如果需要將一個對象轉成字符串類型猴仑,會默認的調用這個方法审轮。
- hashCode()
- 返回的是一個對象的地址哈希碼
- 如果在一個散列序列中,這個方法的作用非常大
- 如果沒有在一個散列序列中辽俗,這個方法基本無用
- HashSet疾渣、HashMap。崖飘。榴捡。
- equals(Object other)
- 自定義的兩個對象的比較規(guī)則
- 理論上來講,可以任意的制定規(guī)則朱浴,但是規(guī)則制定吊圾,一般需要遵循一定的規(guī)范
- 如果other是null达椰,則返回一定是false
- 如果this == other,則返回一定是true
- 如果this和other的類型不同项乒,則返回一定是false
- 如果a.equals(b) == true啰劲,那么b.equals(a)結果也一定是true
- 如果a.equals(b) == ture, b.equals(c) == true,則 a.equals(c) 也一定要是true
- 引用數(shù)據(jù)類型的比較檀何,一般情況下都是通過equals進行比較的
- getClass()
- 獲取一個對象的類型
8. super關鍵字
和this是比較像的蝇裤。
this: 對當前對象的引用。
super: 對父類對象的引用频鉴。