久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談Java方法調(diào)用的優(yōu)先級(jí)問(wèn)題

瀏覽:3日期:2022-08-23 13:13:34

實(shí)現(xiàn)Java多態(tài)性的時(shí)候,關(guān)于方法調(diào)用的優(yōu)先級(jí):

我們這樣假設(shè)下,super(超類(lèi))、this(當(dāng)前類(lèi)對(duì)象)、show(方法)、object(對(duì)象),方法調(diào)用優(yōu)先順序: ①this.show(object)>②super.show(object)> ③this.show((super)object)>④super.show((super)object)

先看以下代碼

class ParentCls {public String show(ChildA obj){return 'Parent and ChildA';}public String show(ParentCls obj) {return 'Parent';}}

然后寫(xiě)一個(gè)子類(lèi)ChildA ,繼承ParentCls :

class ChildA extends ParentCls{public String show(ChildA obj) {return 'ChildA';};public String show(ParentCls obj) {return 'ChildA and Parent';};}

寫(xiě)一個(gè)子類(lèi)ChildB,繼承ChildA :

class ChildB extends ChildA{

}

測(cè)試下

public static void main(String[] args) {ParentCls p1 = new ParentCls();ParentCls p2 = new ChildA();ChildA a = new ChildA();ChildB b = new ChildB();System.out.println(p1.show(a));System.out.println(b.show(a));System.out.println(a.show(b));System.out.println(p2.show(a));}

輸出

Parent and ChildAChildAChildAChildA

第一個(gè)輸出,p1是ParentCls的實(shí)例,且類(lèi)ParentCls中有show(ChildA obj)方法,直接執(zhí)行該方法, ①有效;

第二個(gè)輸出,b是ChildB 的實(shí)例,類(lèi)ChildB 中沒(méi)有show(ChildA obj)方法,①無(wú)效,再?gòu)腃hildB 的父類(lèi)ChildA查找,ChildA中剛好有show(ChildA obj)方法,②有效;

第三個(gè)輸出,a是ChildA的實(shí)例,b是ChildB的實(shí)例,類(lèi)ChildA中沒(méi)有show(ChildB obj)方法,①無(wú)效,再?gòu)腃hildA的父類(lèi)ParentCls入手,ParentCls中也沒(méi)有show(ChildB obj)方法,②無(wú)效,從ChildB的父類(lèi)入手,(super)ChildB 即是ChildA,所以a.show(b)=>a.show(a),ChildA中剛好有show(ChildA obj)方法,③有效;

④就不作演示,根據(jù)①②③很容易得出結(jié)論;

第四個(gè)輸出,體現(xiàn)Java多態(tài)性,符合①,但是p2是引用類(lèi)ChildA的一個(gè)對(duì)象 ,ChildA 重寫(xiě)覆蓋了ParentCls的show()方法,所以執(zhí)行ChildA 的show()方法;

補(bǔ)充知識(shí):Java中關(guān)于靜態(tài)塊,初始化快,構(gòu)造函數(shù)的執(zhí)行順序

代碼如下:

public class ParentDemo { static { System.out.println('this is ParentDemo static'); } { System.out.println('this is ParentDemo code block'); } public ParentDemo() { System.out.println('this is ParentDemo constructor'); }}public class SonDemo extends ParentDemo{ static { System.out.println('this is SonDemo static'); } { System.out.println('this is SonDemo code block'); } public SonDemo() { System.out.println('this is SonDemo constructor'); }}public class TestMain { public static void main(String[] args){ new SonDemo(); }}

輸出結(jié)果:

this is ParentDemo staticthis is SonDemo staticthis is ParentDemo code blockthis is ParentDemo constructorthis is SonDemo code blockthis is SonDemo constructor

由上可見(jiàn),Java中 靜態(tài)塊中的代碼在類(lèi)加載時(shí)執(zhí)行,子類(lèi)繼承父類(lèi)。會(huì)按照繼承的順序先執(zhí)行靜態(tài)代碼塊。當(dāng)實(shí)例化對(duì)象的時(shí)候,同理會(huì)按照繼承的順序依次執(zhí)行如下代碼:

代碼塊,構(gòu)造函數(shù),當(dāng)父類(lèi)的執(zhí)行完以后,再執(zhí)行子類(lèi)。

以上這篇淺談Java方法調(diào)用的優(yōu)先級(jí)問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美成人高清视频 | 女人爽到高潮aaaa电影 | 国产久 | 成人免费视频在线观看 | 日韩久草| 精品久久久久久久久久久久久久 | 日韩毛片免费视频一级特黄 | 欧美一区二区伦理片 | 最新日韩免费 | 国产免费天天看高清影视在线 | 国产二区视频 | 日本精品免费在线观看 | 黄色片在线 | 九色在线| 精品天堂 | 一级女性全黄久久生活片免费 | 日韩高清国产一区在线 | 伊人久久国产 | 国产精久久一区二区三区 | 午夜在线电影 | a级片在线观看 | a久久久| 日韩精品免费 | 欧美日韩毛片 | 国产最好的精华液网站 | 日本午夜精品 | 国产精品久久久久久久久久99 | 精品日韩一区 | 亚洲国产二区 | 91成人免费在线视频 | 天天干夜夜爽 | 黄视频网站免费看 | 一区二区日本 | 中文字幕一区二区三区乱码图片 | 成人精品在线观看 | 中文字幕第一页在线 | 久在线视频 | 日本一区二区三区免费观看 | 日韩欧美综合 | 欧美人人 | 日韩精品免费在线观看 |