JAVA中的多型性

2021-07-09 19:19:22 字數 1380 閱讀 7316

物件導向的特徵是封裝、繼承、多型,其中多型是指不同類的物件對同一訊息做出相應,即同一訊息可以根據傳送物件的不同而採用多種不同的行為方式。

類的多型性表現在過載、重寫、物件的多型性上,過載與重寫在之前的博文中做過講解,這裡不再贅述,本文主要講解物件的多型性。

物件的多型性指子類與父類的相互裝換,包含如下兩種:

1、向上轉換:父類 父類物件 = 子類例項;

public class transformer  

}class a

public void fun2()

}class b extends a

public void fun3()

執行結果如下:

雖然向超類轉型,如果有方法的重寫,執行的依然是重新後的方法,因為例項化的是子類。

轉型後的物件不能執行派生類中新增的方法,如想執行,還應將物件向下轉型為子類。

2、向下轉換:子類 子類物件 = (子類)父類例項;

之所以能向下轉型,是因為最初例項化的是子類,轉為超類再轉為子類還可以轉化回來,如果最初例項化的只是超類,強制轉換為子類對報錯,**如下:

public class transformer  

}class a

public void fun2()

}class b extends a

public void fun3()

}執行結果如下:

通過物件多型性可以例項化介面和抽象類,在物件多型性中常常用到instanceof判斷物件的型別,用法如下:

public class transformer  

public static void fun(a a)

if(a instanceof b)}}

class a

public void fun2()

}class b extends a

public void fun3()

}**的輸出為:

java的多型性

public class duotaitest class 子類 extends 父類 父類 物件名 new 子類 2.抽象類多型 還算常用 abstract class 父類 class 子類 extends 父類 父類 物件名 new 子類 3.介面多型 非常常用 inte ce 父類 clas...

java的多型性

多型包括重寫 override 和過載 overload 重寫發生在超類和子類之間,子類覆蓋超類的方法。過載發生在同乙個類中,方法名字相同,方法的形式引數和返回值不同。執行 如下 package com.base.oo class a public string show a obj class b...

java物件的多型性

向上轉型 父類 父類物件 子類例項 example class person class student public class movedemon 向下轉型 子類 子類物件 子類 父類例項 父類向下轉型要用強制 example class person class student public ...