多型的詳細介紹

2021-07-10 17:27:55 字數 2016 閱讀 1721

多型:

定義:某一類事物的多種存在形態

列:動物中 貓 狗;

貓這這個物件對應的型別是貓型別;

貓 a = new 貓();

同時貓也是動物中的一種,也可以把貓稱為動物;

動物 b = new 貓();

動物是貓和狗具體事物中抽取出來的父型別

父型別引用指向子型別物件。

物件的多型性:

class 動物

class 狗 extends 動物{}

貓 a = new 貓();

動物 b = new 貓();//乙個物件兩種形態

貓這類事物即具備貓的形態又具備動物的形態,也就算物件的多型性;

簡單的說:就是乙個物件對應著不同的型別;

多型在**中的體現:

父類或者介面的引用指向其子類物件

多型的好處:

提高了**的擴充套件性,前期定義的**可以使用後期定義的內容;

abstract class animal

class dog extends animal

void lookhome()

}

class cat extends animal

void catchmouse()

} class duotaidemo

public static viod method1(animal a)

}《多型的弊端:

前期定義的內容不能呼叫後期子類中特有的內容。

多型的前提:

1:必須有關係 :繼承 實現 。

2:要有覆蓋。

》 if(a instanceof cat)

animal a = new cat();//自動型別提公升貓物件,提公升了動物型別,但是特有的功能無法訪問

//作用就是限制了對特有功能的訪問;

//專業上講:向上轉型將子型別隱藏,就不使用子類的特有方法;

//如果還想使用具體動物貓的特有功能,可以將該物件進行向下轉型;

//向下轉型的目的是為了使用子類中的特有方法。

a.eat();

cat c = (cat)a;

c.eat();

c.catchmouse();

/*注意:對於轉型,自始至終都是子類物件在做著型別的變化(如小貓轉動物,小貓轉小貓)

animal an = new dog();

cat c = (cat)an;

錯誤:報classcatexception 型別轉換異常

*/class 畢姥爺

viod 釣魚()

}class 畢老師 extends 畢姥爺

viod 看電影()

}class duotaidemo

}多型時 成員的特點:

1,成團變數:

編譯時參考引用型變數所屬的類中是否有呼叫的變數,有,編譯通過;沒有,編譯失敗;

執行時參考引用型變數所屬的類中是否有呼叫的變數,並執行該屬性類中的成員變數;

2,成員函式:

編譯時參考引用型變數所屬的類中是否有呼叫的函式,有,編譯通過;沒有,編譯失敗;

執行時參考的是物件所屬的類中是否有呼叫的函式;

簡單說:編譯看左邊,執行看右邊。

3,靜態函式:

編譯時參考引用型變數所屬的類中是否有呼叫的靜態方法;

執行時參考引用型變數所屬的類中是否有呼叫的靜態方法;

簡單說:編譯和執行都看左邊。

---------------------------------------

成員變數:

class fu

class zi extends fu

class duotaidemo

}------------------------------------------

成員函式:

class fu

}class zi extends fu

}public static void main(string args)

}

多型詳細講解

多型跟屬性無關,多型指的是方法的多型,而不是屬性的多型。案例代入 public class animal public class catextends animal public void scratch public class dogextends animal public void gua...

AsyncTast的詳細介紹

package com.sequel.text import android.os.asynctask import android.widget.textview 執行順序 onpreexecute doinbackground onpostexecute 三個引數的的解釋 第乙個是指 doinb...

iframe的詳細介紹

src aa.jsp width 750 height 30 frameborder no border 0 marginwidth 0 marginheight 0 scrolling no allowtransparency yes iframe runat server 這個最好加上ifram...