- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- java多態(tài)的向上轉型的概念及實(shí)例分析
向上轉型就是把一個(gè)子類(lèi)引用給一個(gè)父類(lèi)引用,也就是父類(lèi)引用 引用了子類(lèi)的對象,即父類(lèi) 父類(lèi)對象 = 子類(lèi)實(shí)例。
此時(shí)通過(guò)父類(lèi)引用變量調用的方法是子類(lèi)覆蓋或繼承父類(lèi)的方法,而不是父類(lèi)的方法。但是調用的屬性還是父類(lèi)的屬性。
class Animal { public String name; public void eat() { System.out.println(this.name + " 正在吃"); } } class Cat extends Animal { } public class Test extends TestDemo { public static void main(String[] args) { //父類(lèi)引用 引用了 子類(lèi)引用所引用的對象 Cat cat = new Cat(); Animal animal = cat;//向上轉型 } }
知識點(diǎn)擴充:
Java允許把子類(lèi)對象賦值給父類(lèi)的引用變量,不用做任何強制轉換,系統自動(dòng)完成。向上轉型來(lái)自于自下而上的繼承關(guān)系,子類(lèi)繼承父類(lèi),子類(lèi)是一種特殊的父類(lèi),所以向上轉型的操作其實(shí)是情理之中的。
下面依照簡(jiǎn)單的代碼,來(lái)試著(zhù)理解向上轉型的概念與好處。
package com.my.pac14; /** * @auther Summerday */ public class DynamicBinding { //Object是所有類(lèi)的超類(lèi),根據向上轉型,該方法可以接受任何類(lèi)型的對象 public static void test(Object x) { System.out.println(x.toString()); } public static void main(String[] args) { test(new PrimaryStudent());//Student test(new Student());//Student test(new Person());//Person test(new Object());//java.lang.Object@1b6d3586 } } class Person extends Object { @Override public String toString() { return "Person"; } } class Student extends Person { @Override public String toString() { return "Student"; } } class PrimaryStudent extends Student { }
到此這篇關(guān)于java多態(tài)的向上轉型的概念及實(shí)例分析的文章就介紹到這了,更多相關(guān)java多態(tài)的向上轉型是什么內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站