1. 程式人生 > >面向對象-特征之繼承

面向對象-特征之繼承

屬性 sys 父類 得到 com system pub 就是 調用

繼承:

1.概念:將相同的成員變量和方法寫到父類,子類繼承父類,還可以加上子類獨有的屬性,減少冗余代碼。
舉例:兒子繼承父親的一些特征和手藝,兒子還可以有自己的特征。
2.使用:子類名+extends+父類名
用super()方法名來調用父類中的方法。
註意:一個子類只能繼承一個父類,一個父類可以被多個子類繼承。

3.繼承關系初始化順序
父類屬性--》父類的構造方法--》子類屬性--》子類的構造方法
先父後子 先屬後構

方法的重載和重寫?overloading和override區別
一、重載 overloading


1.規則:同一個類中
方法名稱相同
參數列表必須不相同(類型 個數 順序)
返回值類型和訪問修飾符無關
構造方法重載
例:public Student(){}
public Student(String name){}
public Student(String sex){}//錯誤,有相同類型的參數
public Student(String name,int age){}

2.發生在同類中。


二、重寫 override
1.規則:在繼承關系中體現
方法名字相同
參數列表必須相同
返回值的類型相同或者是其子類
訪問修飾符不能嚴於父類(父類是protected 子類是protected public )
方法重寫:相對於繼承而言,子類中對父類已經存在的方法進行區別修改。

2.發生在子類和父類兩個類中。

關鍵字:

abstract 抽象類

1.修飾class後變為抽象類,限制實例化
2.類中定義方法沒有意義,

因此我們可以在類中定義方法為抽象方法,抽象方法沒有方法體。
3.抽象方法的實現步驟
1)在父類的方法前添加abstract,去除方法體
2)在子類中重寫此抽象方法
4.為什麽使用抽象方法?
1)父類只是知道子類應該有哪些方法,但是無法準確完成方法具體實現
2)避免子類設計的隨意性
5.註意:
1)父類中編寫抽象方法,子類必須重寫
2)抽象類中可以有普通方法,也可以有抽象方法
3)抽象方法必須在抽象類中

4)final和abstract是兩個相反的單詞,絕對不能同時修飾

Object 上帝類 祖宗類

1.概念:Object類是所有類的父類。如果一個類沒有使用extends關鍵字標識繼承另一個類,那麽這個類默認繼承Object
因此自定義的類和底層開發人員的類

例:String str="";
str.equals("");//equals標明並不是在Object類,是String類。因為String子類重寫了Object父類裏的方法

2.Object類中的主要方法
1)equals :比較對象的引用是否指向同一塊內存地址。(引用:指向一塊內存地址)

2)toString()
StringBuffer--》toString()--->StringBuffer轉換為String類型
返回的是哈希碼值(對象地址字符串)。(Hash)

我們直接使用System.out.println(dog);輸出一個對象
結果就是對象的地址字符串也叫哈希碼值(com.sisp.oop4.object.Dog@659e0bfd)

哈希碼值:通過哈希算法(Hash)生成的一個字符串,用來區分我們的對象地址碼。

3)getClass() 可以得到此對象的類型
System.out.println(dog.getClass());
class com.sisp.oop4.object.Dog

面向對象-特征之繼承