Java基礎 物件導向(五)多型

2021-09-06 17:03:54 字數 1641 閱讀 9316

一、概述

物件的多型性

class 動物

{}class 貓 extends 動物

{}class 狗 extends 動物

{}class demo

}

貓這類食物既具備貓的形態,又具備動物的形態。這就是多型性。

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

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

abstract class animal

class dog extends animal

void lookhome() }

class cat extends animal

void catchmouse() }

class pig extends animal

void gongdi() }

class duotaidemo

public static void method(animal a)//animal a = new dog();

else if(a instanceof dog)

else

} /*

public static void method(cat c)

public static void method(dog d)

*/ }

1.弊端:前期定義的內容不能使用(呼叫)後期子類的特有內容。 定義了animal不能使用貓的catchmouse

2.前提:

1.向上轉型:作用就是限制對特有功能的訪問。

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

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

注意:對於轉型,自始自終都是子類物件在做著型別的變化。

3.型別判斷instanceof

用於判斷物件的具體型別。

if(a instanceof cat)//instanceof:用於判斷物件的具體型別。只能用於引用資料型別判斷

//通常在向下轉型前用於健壯性的判斷。

else if(a instanceof dog)

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

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

簡單說,就是編譯和執行都參考左邊。

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

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

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

因為成員函式存在覆蓋特性。

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

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

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

其實對於靜態方法,是不需要物件的。直接用類名呼叫即可。

Java物件導向 多型

歡迎光臨新長城部落格中心 物件導向 多型 多型的概述 某一類事物的多種存在的多種形態。1 多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。2 多型的前提 必須是類與類之間有關係。要麼繼承,要麼實現。通常還有乙個前提 存在覆蓋。3 多型的好處 多型的出現大大的提高程式的...

java 物件導向多型

1 多型性 1 方法的過載和重寫 2 物件的多型性 2 物件的多型性 1 向上轉型 程式會自動完成 父類 父類物件 子類例項 2 向下轉型 強制型別轉換 子類 子類物件 子類 父類例項 3 案例 package csdn.zyl.demo class a12 public void tell2 cl...

Java基礎之物件導向(五)

一 介面 inte ce 1 概念 指用inte ce關鍵字修飾的一種型別 介面型別。他用於描述一系列功能性的方法,並讓子類實現。2 內容 1 介面不能有屬性,只能有被static final修飾的屬性及靜態常量。2 介面只能有抽象方法,不能有具體的方法。3 介面沒有構造器,所以不能建立物件,只能通...