Java之協(xié)變返回類型理解和簡單實(shí)例

開心一笑

【早上起來,發(fā)現(xiàn)天氣越來越冷了,白粽子記得要多包幾層葉】

提出問題

Java中協(xié)變返回類型如何理解???

解決問題

概念

導(dǎo)出類(子類)覆蓋(即重寫)基類(父類)方法時(shí),返回的類型可以是基類方法返回類型的子類。

實(shí)例
package com.evada.de;
/**
 * @Author 阿毅
 * Created by Ay on 2016/12/4.
 */
public class Ay {

    public static void main(String[] args) {
        Person person = new Boy();
        Flower flower = person.buy();
        flower.like();
        //! flower.love();  編譯錯(cuò)誤
        //因?yàn)槭菂f(xié)變返回類型,所以可以向下轉(zhuǎn)型
        RoseFlower roseFlower  = (RoseFlower) person.buy();
        //可以調(diào)用like方法
        roseFlower.like();
        //可以調(diào)用love方法
        roseFlower.love();
    }
}
class Person{
    public Flower buy(){
        System.out.println("Flower...");
        return new Flower();
    }
}
/**
 * 男孩
 */
class Boy extends Person{

    /**
     * 這里覆蓋Person類的buy
     * @return
     */
    @Override
    public RoseFlower buy(){
        System.out.println("RoseFlower...");
        //注意這里,這里就是協(xié)變返回類型
        //導(dǎo)出類**(子類)覆蓋(即重寫)**基類**(父類)方法時(shí),
        // 返回的類型可以是基類方法返回類型的子類
        return new RoseFlower();
    }
}
class Flower{
    /**
     * 讓普通人喜歡
     */
    public void like(){
        System.out.println("like");
    }
}
class RoseFlower extends Flower{
    /**
     * 讓女孩喜歡
     */
    public void love(){
        System.out.println("love....");
    }
}

打印結(jié)果:

RoseFlower...
like
RoseFlower...
like
love....

協(xié)變返回類型運(yùn)行返回更加具體的類,比如上面的RoseFlower類,而不是Flower類,在java中,兒子比父親強(qiáng),返回子類適用范圍更為廣泛,因?yàn)槌丝梢哉{(diào)用父類的方法,還可以調(diào)用自己的方法,get起來。

參考文章

【1】理解Java中的協(xié)變返回類型

【2】Thinking in Java(Java編程思想)

【3】關(guān)于java可變(協(xié)變)返回類型的解說之一------------基類與派生類

讀書感悟

來自《徒然草》吉田兼好

  • 世上的事,最令人回味的,是始和終這兩端。
  • 人心是不待風(fēng)吹而自落的花。從前的戀人,還記得她情真意切的話,但人已離我而去,形同路人。此種生離之痛,猶甚于死別也。故見到染絲,有人會傷心;面對岔路,有人會悲泣。
  • 不管什么事,不要一副行家里手的樣子。有教養(yǎng)的杰出人士,即使完全懂得的問題,難道就無節(jié)制地炫耀嗎?在自己精通的專門領(lǐng)域,言辭一定要慎重,只要?jiǎng)e人不提問就不要發(fā)言,這才是風(fēng)度。
  • 那所有應(yīng)該做而沒有做的,逐日侵蝕沉淀之后,貯滿淚水,就成為遺憾湖。那所有不該做而又做了的,層層堆積重疊之后,暗影聳然,就成為悔恨山。
  • 什么是真智慧呢?即是要明白可與不可都一樣的道理。
  • 立志要成就一事的人,就不要因他事之無法兼顧而感到痛惜;也不要因他人之嘲笑自己有諸般不能而感到羞恥。一事之成,要以舍棄萬事為代價(jià)。
  • 凡事一知半解,卻夸夸其談、品頭論足,必令聽者聞之生厭。

其他

如果有帶給你一絲絲小快樂,就讓快樂繼續(xù)傳遞下去,歡迎點(diǎn)贊、頂、歡迎留下寶貴的意見、多謝支持!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,896評論 18 399
  • 前言 泛型(Generics)的型變是Java中比較難以理解和使用的部分,“神秘”的通配符,讓我看了幾遍《Java...
    珞澤珈群閱讀 8,140評論 12 51
  • 前言 人生苦多,快來 Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,762評論 9 118
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,280評論 0 62
  • 今天一家人吃飯,無意中說到二姐,我說:二姐的性格,不了解她的人難以接受。尤其是她的說話方式,真的是心口如一,不會阿...
    溫而澤潤閱讀 1,212評論 1 4

友情鏈接更多精彩內(nèi)容