新聞中心
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Java中多態(tài)的用法有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
多態(tài)性是通過:
1 接口和實現(xiàn)接口并覆蓋接口中同一方法的幾不同的類體現(xiàn)的
2 父類和繼承父類并覆蓋父類中同一方法的幾個不同子類實現(xiàn)的.
一、基本概念
多態(tài)性:發(fā)送消息給某個對象,讓該對象自行決定響應何種行為 。通過將子類對象引用賦值給超類對象引用變量來實現(xiàn)動態(tài)方法調(diào)用 。
java 的這種機制遵循一個原則:當超類對象引用變量引用子類對象時,被引用對象的類型而不是引用變量的類型決定了調(diào)用誰的成員方法,但是這個被調(diào)用的方法必須是在超類中定義過的,也就是說被子類覆蓋的方法 。
如果a是類A的一個引用,那么,a可以指向類A的一個實例,或者說指向類A的一個子類 。
如果a是接口A的一個引用,那么,a必須指向?qū)崿F(xiàn)了接口A的一個類的實例 。
二、Java多態(tài)性實現(xiàn)機制
SUN目前的JVM實現(xiàn)機制,類實例的引用就是指向一個句柄(handle)的指針,這個句柄是一對指針:
一個指針指向一張表格,實際上這個表格也有兩個指針(一個指針指向一個包含了對象的方法表,另外一個指向類對象,表明該對象所屬的類型);
另一個指針指向一塊從java堆中為分配出來內(nèi)存空間 。
三、總結(jié)
1、通過將子類對象引用賦值給超類對象引用變量來實現(xiàn)動態(tài)方法調(diào)用 。
DerivedC c2=new DerivedC(); BaseClass a1= c2; //BaseClass 基類,DerivedC是繼承自BaseClass的子類 a1.play(); //play()在BaseClass,DerivedC中均有定義,即子類覆寫了該方法
新聞名稱:Java中多態(tài)的用法有哪些-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.dlmjj.cn/article/dcohho.html