java多態(tài)的向上轉(zhuǎn)型的概念及實(shí)例分析
1、說(shuō)明
向上轉(zhuǎn)型就是把一個(gè)子類引用給一個(gè)父類引用,也就是父類引用 引用了子類的對(duì)象,即父類 父類對(duì)象 = 子類實(shí)例。
此時(shí)通過(guò)父類引用變量調(diào)用的方法是子類覆蓋或繼承父類的方法,而不是父類的方法。但是調(diào)用的屬性還是父類的屬性。
2、實(shí)例
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) { //父類引用 引用了 子類引用所引用的對(duì)象 Cat cat = new Cat(); Animal animal = cat;//向上轉(zhuǎn)型 } }
知識(shí)點(diǎn)擴(kuò)充:
Java允許把子類對(duì)象賦值給父類的引用變量,不用做任何強(qiáng)制轉(zhuǎn)換,系統(tǒng)自動(dòng)完成。向上轉(zhuǎn)型來(lái)自于自下而上的繼承關(guān)系,子類繼承父類,子類是一種特殊的父類,所以向上轉(zhuǎn)型的操作其實(shí)是情理之中的。
下面依照簡(jiǎn)單的代碼,來(lái)試著理解向上轉(zhuǎn)型的概念與好處。
package com.my.pac14; /** * @auther Summerday */ public class DynamicBinding { //Object是所有類的超類,根據(jù)向上轉(zhuǎn)型,該方法可以接受任何類型的對(duì)象 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)的向上轉(zhuǎn)型的概念及實(shí)例分析的文章就介紹到這了,更多相關(guān)java多態(tài)的向上轉(zhuǎn)型是什么內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中的WeakHashMap、LinkedHashMap、TreeMap與Set詳解
這篇文章主要介紹了Java中的WeakHashMap、LinkedHashMap、TreeMap與Set詳解,在JVM中,一個(gè)對(duì)象如果不再被使用就會(huì)被當(dāng)做垃圾給回收掉,判斷一個(gè)對(duì)象是否是垃圾,我們的WeakHashMap就是基于弱引用,需要的朋友可以參考下2023-09-09java線程的中斷和同步問(wèn)題的實(shí)現(xiàn)
本文主要介紹了java線程的中斷和同步問(wèn)題的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07詳解java中String、StringBuilder、StringBuffer的區(qū)別
這篇文章主要介紹了java中String、StringBuilder、StringBuffer的區(qū)別,文中講解的很清晰,有對(duì)于這方面不太懂的同學(xué)可以研究下2021-02-02Java使用HttpClient實(shí)現(xiàn)Post請(qǐng)求實(shí)例
本篇文章主要介紹了Java使用HttpClient實(shí)現(xiàn)Post請(qǐng)求實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02詳解Java對(duì)象序列化為什么要使用SerialversionUID
這篇文章主要介紹了詳解Java對(duì)象序列化為什么要使用SerialversionUID,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11openEuler?搭建java開(kāi)發(fā)環(huán)境的詳細(xì)過(guò)程
這篇文章主要介紹了openEuler?搭建java開(kāi)發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06JPA @GeneratedValue 四種標(biāo)準(zhǔn)用法TABLE,SEQUENCE,IDENTITY,
這篇文章主要介紹了@GeneratedValue 四種標(biāo)準(zhǔn)用法TABLE,SEQUENCE,IDENTITY,AUTO詳解,需要的朋友可以參考下2024-03-03