多型的基礎知識總結

2021-07-11 14:41:46 字數 1676 閱讀 8634

多型 

1.什麼是多型

簡單的說可以理解為某一類事物的多種存在形態。

舉個例子說一下吧:

class animal

} class dog extends animal

}比如說有乙個animal類,乙個dog類,dog類繼承了animal類,現在我們可

以從兩個方面來看dog,即

可以把它當做dog,也可以把它當做animal,所以說現在dog類可以有兩種存在形式

;2、物件多型的前提(要記住)

a:類與類(或介面)要有繼承(或實現)關係。

b:一定要有方法的重寫。

c:一定要有父類或者介面的引用指向子類的物件。(animal a=new dog

)3、多型思想:可以指揮同一型別的一批物件做事情。

多型的出現讓我們複雜的問題簡單化了。

4、多型中成員的特點:

a:成員變數:編譯和執行都看父類。

b:非靜態方法:編譯看父類,執行看子類。(重點,今天考試考到好幾

個) 比如:animal a=new dog;

a.eat();

這句**編譯的時候首先看父類有沒有eat()方法,如

果有這個方法,編譯可以通過,如果沒有,編譯不會通過

執行的時候看子類dog有沒有eat()方法,如果子類有

eat()方法,輸出的是子類中的eat()方法,如果沒有輸出父類animal

中的eat()方法;

為了更好的說明這一點我就舉個今天考的例子吧

class base

} public class child extends base

public static void main(string a)

}分析:題目中有兩個類,分別是base類和child類,並且child繼承了base

類,並且重寫了父類的text()方法

child child=new child();建立子類物件

base base=new child(); 建立子類物件,賦給父類引用型變

量base,滿足了多型的三個前提:1.有繼承關係;2、子類重寫了父類中

的方法;3、父類的引用base 指向子類物件(new child)

base.test() 編譯期間看父類中有test()方法,運

行的時候子類中也有test()方法,所以輸出結果一目了然了

當然是child,test() (是不是覺得挺簡單的,只要記住這些判斷步驟,相信下次遇到多型就不會出錯了)

c:靜態方法:編譯和執行都看父類。

補充一點吧:如果子類中有自己的特有方法,如果你想呼叫特有方法,這

時候你就必須要向下轉型了!話不多說還是看一下**吧

class animal

}class dog extends animal

}} animal a=new dog() 主函式中有這一句

**,看到我們就想到了多型,現在我們的需求是

想呼叫dog中yaoren()這個方法,並且這個方法是子類dog特有的方法

我們該如何呼叫它呢,這時候我們就不能把dog當做animal看待了,要把a強行轉成dog所以**就要寫成

dog g=(dog)a; g.yaoren(),輸出結果一目了然

C C 基礎知識總結 多型性

1.多型性的概述 1.1 多型是指同樣的訊息被不同型別的物件接收時導致不同的行為。所謂訊息是指對壘的成員函式的呼叫,不同行為是指不同的實現。1.2 多型的實現 1 實現角度講多型可分為兩類 編譯時的多型和執行時的多型。編譯時 編譯過程中確定了同名操作的具體操作物件。靜態繫結。執行時 程式執行時動態確...

基礎知識 封裝 繼承 多型 抽象

封裝 是物件導向方法的重要原則,就是把物件的屬性和行為 資料 結合為乙個獨立的整體,並盡可能隱藏物件的內部實現細節,就是把不想告訴或者不該告訴別人的東西隱藏起來,把可以告訴別人的公開,別人只能用我提供的功能實現需求,而不知道是如何實現的。增加安全性 public class person publi...

html的基礎知識總結

html的基礎知識總結 html的基本結構式 元素 屬性 屬性值 內容 元素 屬性 屬性值 無內容 eg 文雨婷 table元素 eg 一行一列 一行兩列 有序和無序列表 無序 eg 有序 eg 框架元素 eg 注 target 新開乙個網頁 表單元素 eg checkbox 核取方塊 redio ...