開心一笑
【早上起來,發(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起來。
參考文章
【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)贊、頂、歡迎留下寶貴的意見、多謝支持!