一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 淺談Java方法調(diào)用的優(yōu)先級(jí)問題

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

2020-10-07 22:23Joke誓言 JAVA教程

這篇文章主要介紹了淺談Java方法調(diào)用的優(yōu)先級(jí)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

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

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

先看以下代碼

?
1
2
3
4
5
6
7
8
9
class ParentCls {
public String show(ChildA obj){
return "Parent and ChildA";
}
 
public String show(ParentCls obj) {
return "Parent";
}
}

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

?
1
2
3
4
5
6
7
8
class ChildA extends ParentCls{
public String show(ChildA obj) {
return "ChildA";
};
public String show(ParentCls obj) {
return "ChildA and Parent";
};
}

寫一個(gè)子類ChildB,繼承ChildA :

class ChildB extends ChildA{

}

測(cè)試下

?
1
2
3
4
5
6
7
8
9
10
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));
}

輸出

?
1
2
3
4
Parent and ChildA
ChildA
ChildA
ChildA

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

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

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

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

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

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

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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é)果:

?
1
2
3
4
5
6
this is ParentDemo static
this is SonDemo static
this is ParentDemo code block
this is ParentDemo constructor
this is SonDemo code block
this is SonDemo constructor

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

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

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

原文鏈接:https://blog.csdn.net/u014063265/article/details/68063497

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女扒开两腿露出尿口的视频 | 99热这里只精品99re66 | 国产精品成人一区二区 | 午夜一级 | 兽皇日本 | 欧美另类xxx精品人妖 | 亚洲看片lutube在线入口 | 久草在线精彩免费视频 | 波多洁野衣一二区三区 | 好猛好紧好硬使劲好大刺激视频 | www一区 | 吃胸膜奶视频456 | 国产小视频网站 | 亚洲人成伊人成综合网久久 | 日老逼 | 深夜视频免费看 | 好大水好多好爽好硬好深视频 | 久久这里都是精品 | 古代双性美人被老糟蹋 | 日韩成本大片35分钟免费播放 | 精品国产免费久久久久久 | yjzz视频| 果冻传媒天美传媒在线小视频播放 | 国产91素人搭讪系列天堂 | 亚洲红怡院 | 亚洲国产精品综合久久一线 | ck7788免费视频 | 国产日韩欧美一区 | 国产一区二区在线免费观看 | 黑人巨鞭大战白妞10级 | 青青草国产精品免费 | 亚洲乱亚洲乱妇41p 亚洲乱码一区二区三区国产精品 | 香蕉免费看一区二区三区 | 国产第2页 | 免费观看欧美成人h | 成人福利在线播放 | 把内裤拔到一边高h1v1 | 久久中文字幕综合不卡一二区 | 日韩精品一区二区三区视频 | 亚洲成人一区 | 欧美人鲁交大全 |