Java 特性之多型性

2021-09-19 21:27:09 字數 2223 閱讀 1045

重寫

父類引用指向子類物件

add(int, int)

add(int, int, int)

add(int, int)

add(int, float)

add(int, float)

add(float, int)

int

add(int, int)

float

add(int, int)

public

class

animal

}public

class

catextends

animal

public

static

void

main

(string args)

}

meow
不能降低方法的訪問許可權。

static, private, final 標記的方法以及類的構造方法不能被重寫覆蓋。

class

human

}class

boyextends

human

public

static

void

main

( string args)

}

human walks

human walks

靜態繫結使用的是類資訊:類的型別決定呼叫方法,而動態繫結使用的是物件資訊:物件的型別決定呼叫方法。

方法過載使用靜態繫結,而方法重寫使用動態繫結。

class

a public string show

(a obj)

}class

bextends

a public string show

(a obj)

}class

cextends

bclass

dextends

bpublic

class

main

}

1--a and a

2--a and a

3--a and d

4--b and a

5--b and a

6--a and d

7--b and b

8--b and b

9--a and d

a1.show(c)由編譯器進行靜態繫結(前期繫結)方法二 show(a obj)。

a1.show(d)由編譯器進行靜態繫結(前期繫結)方法一 show(d obj)。

a a2 = new b();多型建立父類引用,指向子類物件,a2 向上轉型具有呼叫 a 類方法一 show(d obj) 和方法二 show(a obj) 的能力,其中子類 b 重寫父類 a 的方法二 show(a obj) 為方法四 show(a obj)。記住向上轉型存在缺點,即不能呼叫子類中有,父類沒有的方法,如方法三 show(b obj)。

a2.show(b)執行時動態繫結(後期繫結)方法四 show(a obj)。

a2.show(c)執行時動態繫結(後期繫結)方法四 show(a obj)。

a2.show(d)由編譯器進行靜態繫結(前期繫結)方法一 show(d obj)。

b b = new b();正常建立物件 b,涉及函式過載 show(),b 具有呼叫方法三 show(b obj) 和方法四 show(a obj) 的能力。同時 b 繼承自 a 因此擁有方法一 show(d obj) 和方法二 show(a obj) 其中方法二被方法四重寫覆蓋。

b.show(b)由編譯器進行靜態繫結(前期繫結)方法三 show(b obj)。

b.show(c)由編譯器進行靜態繫結(前期繫結)方法三 show(b obj)。

b.show(d)由編譯器進行靜態繫結(前期繫結)方法一 show(d obj)。

C 特性之多型性

c 多型性概括為 乙個介面,多種方法 程式在執行時才決定呼叫的函式,它是物件導向程式設計領域的核心概念。c 多型性是通過虛函式來實現的,虛函式允許子類重新定義成員函式,而子類重新定義父類的做法成為覆蓋或者重寫,重寫可以有兩種,直接重寫成員函式和重寫虛函式,只有重寫了虛函式的才能算作體現了c 多型性 ...

java基礎之多型性

物件導向特徵 多型性 1 多型性 乙個事物的多種形態。如 方法的過載和重寫 子類物件的多型性 虛擬方法呼叫 父類引用指向子類的物件實體,當呼叫方法時,執行的是子類重寫父類的方法 2 子類物件的多型性使用的前提 要有繼承性 要有子類對父類方法的重寫。3 程式執行分成編譯時和執行時狀態。對於多型性來說,...

c 之 多型性

先看乙個例子 然後我們引進多型,看看 公升級的威力 1 include2 using namespace std 34 class liberation 10virtual intcombat 1114 private 15 intcapability 16 17class liberation a...