Java——面向物件之繼承
面向物件 —— 繼承
1、為什麼要繼承?繼承的好處?(理解)
(1)程式碼的複用
(2)程式碼的擴充套件
2. 繼承的實現
[ 修飾符 ] class 類名 extends 父類名{
}
3.繼承的特點
(1)子類會繼承父類的所有特徵(屬性、方法)
但是,私有的在子類中是不能直接使用的
(2)子類不會繼承父類的構造器
因為,父類的構造器是用於建立父類的物件的
(3)子類的構造器中又必須去呼叫父類的構造器
在建立子類物件的同時,為從父類繼承的屬性進行初始化用,可以藉助父類的構造器中的程式碼為屬性賦值。
(4)Java只支援單繼承:一個子類只能有一個“直接”父類
(5)Java又支援多層繼承:父類還可以有父類,特徵會代代相傳
(6)一個父類可以同時擁有很多個子類
4.super關鍵字使用
super關鍵字:引用父類的,找父類的xx
用法:
(1)super.屬性
當子類聲明瞭和父類同名的成員變數時,那麼如果要表示某個成員變數是父類的,那麼可以加“super.”
(2)super.方法
當子類重寫了父類的方法,又需要在子類中呼叫父類被重寫的方法,可以使用"super."
(3)super()或super(實參列表)
super():表示呼叫父類的無參構造
super(實參列表):表示呼叫父類的有參構造
注意:
(1)如果要寫super()或super(實參列表),必須寫在子類構造器的首行
(2)如果子類的構造器中沒有寫:super()或super(實參列表),那麼預設會有 super()
(3)如果父類沒有無參構造,那麼在子類的構造器的首行“必須”寫super(實參列表)
5.方法的重寫
1、方法的重寫(Override)
當子類繼承了父類的方法時,又覺得父類的方法體的實現不適合於子類,那麼子類可以選擇進行重寫。
2、方法的重寫的要求
(1)方法名:必須相同
(2)形參列表:必須相同
(3)修飾符
許可權修飾符: >=
(4)返回值型別
如果是基本資料型別和void:必須相同
如果是引用資料型別:<=
在Java中我們認為,在概念範圍上:子類 <父類
3、過載(Overload)與重寫(Override)的區別
過載(Overload):在同一個類中,方法名相同,形參列表不同,和返回值型別無關的兩個或多個方法。
特殊的過載:
public class TestOverload {
public static void main(String[] args) {
B b = new B();
//b物件可以呼叫幾個a方法
b.a();
b.a("");//從b物件同時擁有兩個方法名相同,形參不同的角度來說,算是過載
}
}
class A{
public void a(){
//...
}
}
class B extends A{
public void a(String str){
}
}