1. 程式人生 > 實用技巧 >Java——面向物件之繼承

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){
		
	}
}