物件導向程式設計的三大特性(多型)

2021-09-03 01:53:58 字數 3171 閱讀 9719

具體操作

語法: 父類名 物件名 = new 子類名();

專案含義

含義同乙個介面,使用不同的例項,進而執行不同的操作

優點靈活、簡化、介面性,可替換、擴充性,消除型別間的耦合關係

必要條件

繼承、重寫、父類引用指向子類物件。

animal cat = new cat();

cat.eat();

使用多型方式呼叫方法時:

檢查父類是否有該方法。無則出錯。

父類有該方法時,去呼叫子類同名方法。

這個過程也叫虛擬方法

cat cat = new cat();

cat.eat();

不使用多型方式呼叫方法時:

不會檢視父類。

直接呼叫子類方法。

含義

物件名。objectname。

物件型別。父類名。

選用的建構函式。子類構造器。

parentclassname objectname =

newchildclassname()

;

方式一:重寫

方式二 :介面

方式三:抽象類和抽象方法。

實參型別

示例基本資料型別

cat.eat(「蘋果」);

引用資料型別

num.findmax(arr1);

例項物件

eat(new cat());

原則:直接轉換:子轉父。

強制轉換:父轉子。

// ********************=各自對應類定義物件***************====

// 情況1:子可直接轉父。

animal animal =

newanimal()

;cat cat =

newcat()

;animal = cat;

// 結果:正確

// 情況2:子可直接轉父,但不能同時重複轉。

animal animal =

newanimal()

;// 建立例項物件animal

cat cat =

newcat()

;// 建立例項物件cat

dog dog =

newdog()

;// 建立例項物件dog

animal = cat;

// 結果:正確。子可直接轉父

animal = dog;

// 結果:錯誤。但不能同時重複轉

// 情況3:父可強制轉子。

animal animal =

newanimal()

;// 建立例項物件animal

cat cat =

newcat()

;// 建立例項物件cat

cat =

(cat)animal;

// 結果:正確。父可強制轉子。

// ********************=多型定義物件***************====

// 情況1:子可直接轉父。

animal animal =

newanimal()

;animal cat =

newcat()

;//

animal = cat;

// 結果:正確。

// 情況2:子可直接轉父,但不能同時重複轉。

animal animal =

newanimal()

;animal cat =

newcat()

;animal = cat;

// 結果:正確。

animal = dog;

// 結果:出錯。

// 情況3:父可強制轉子。

animal animal =

newanimal()

;animal cat =

newcat()

;cat cat =

newcat()

;cat =

(cat)animal;

// 正確。父可強制轉子。

// ********************=各自對應類定義物件和多型定義物件***************====

// 情況1: 。

animal cat1 =

newcat()

;cat cat2 =

newcat()

;cat2 = cat1;

// 出錯

cat1 = cat2;

// 正確

// 情況2: 。

animal cat1 =

newcat()

;cat cat2 =

newcat()

;cat2 =

(cat)cat1;

// 正確

cat1 = cat2;

// 正確

動物:貓、狗。

主函式入口類:

public

class

mainentrance

public

static

void

show

(animal a)

else

if(a instanceof

dog)}}

}

動物類:

public

class

animal

}

貓類:

public

class

catextends

animal

public

void

work()

}

狗類:

public dog extends

animal

public

void

work()

}

物件導向三大特性 多型

什麼是多型 父類的一些成員,子類繼承周去重寫從而實現不同的功能。多型的風雷 多型分為兩種,一種是編譯時的多型,一種是執行時的多型。編譯時多型 編譯時的多型性是通過過載來實現的。編譯時的多型性 編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的引數 返回的型別等資訊決定實現...

物件導向的三大特性 多型

python物件導向的三大特徵之一 一種型別的多種形態,多個子類去繼承父類,那麼每乙個子類都是這個父類的一種形態.多型 python處處是多型.python 弱型別語言 name alex python 不管什麼型別,傳入函式,封裝到物件中都可以.python沒有多型?他有什麼?他有鴨子型別.鴨子型...

物件導向三大特性之多型

多型 同乙個物件在不同時刻表現出來的不同狀態。多型的前提和體現 存在繼承關係或者實現關係 這裡的實現是指介面間的關係 有方法的重寫。有父類引用指向子類物件。多型中成員的訪問特點 訪問成員變數時 首先定義乙個動物類 其次定義乙個子類來繼承它 定義乙個測試類 由此可見當我們用多型的形式去訪問類中的成員變...