最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年10月07日 10:29:39   作者:Joke誓言  
這篇文章主要介紹了淺談Java方法調(diào)用的優(yōu)先級問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

我們這樣假設(shè)下,super(超類)、this(當前類對象)、show(方法)、object(對象),方法調(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";
}
}

然后寫一個子類ChildA ,繼承ParentCls :

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

寫一個子類ChildB,繼承ChildA :

class ChildB extends ChildA{

}

測試下

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 ChildA
ChildA
ChildA
ChildA

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

第二個輸出,b是ChildB 的實例,類ChildB 中沒有show(ChildA obj)方法,①無效,再從ChildB 的父類ChildA查找,ChildA中剛好有show(ChildA obj)方法,②有效;

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

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

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

補充知識: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 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)塊中的代碼在類加載時執(zhí)行,子類繼承父類。會按照繼承的順序先執(zhí)行靜態(tài)代碼塊。當實例化對象的時候,同理會按照繼承的順序依次執(zhí)行如下代碼:

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

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

相關(guān)文章

  • 上傳自己的jar包到maven中央倉庫的快速操作方法

    上傳自己的jar包到maven中央倉庫的快速操作方法

    網(wǎng)絡(luò)上可以搜索到很多jar包到中央倉庫,但是都不是多適合自己的項目,于是自己動手寫個,本文檔通過sonatype上傳jar包至maven中央倉庫,Sonatype通過JIRA來管理OSSRH倉庫,具體實例代碼跟隨小編一起看看吧
    2021-08-08
  • springboot CompletableFuture異步線程池詳解

    springboot CompletableFuture異步線程池詳解

    這篇文章主要介紹了springboot CompletableFuture異步線程池的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 利用Java實現(xiàn)文件鎖定功能

    利用Java實現(xiàn)文件鎖定功能

    這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)文件鎖定功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-08-08
  • Spring 實現(xiàn)給Bean屬性注入null值

    Spring 實現(xiàn)給Bean屬性注入null值

    這篇文章主要介紹了Spring 實現(xiàn)給Bean屬性注入null值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java引用傳遞實現(xiàn)方式以及與值傳遞的區(qū)別

    Java引用傳遞實現(xiàn)方式以及與值傳遞的區(qū)別

    這篇文章主要給大家介紹了關(guān)于Java引用傳遞實現(xiàn)方式以及與值傳遞的區(qū)別的相關(guān)資料,引用傳遞指在調(diào)用函數(shù)時將實際參數(shù)的地址直接傳遞到函數(shù)中,那么在函數(shù)中對參數(shù)所進行的修改,將影響到實際參數(shù),需要的朋友可以參考下
    2023-09-09
  • Spring Boot 配置大全(小結(jié))

    Spring Boot 配置大全(小結(jié))

    本篇文章主要介紹了Spring Boot 配置大全(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • SpringBoot嵌套事務(wù)詳解及失效解決方案

    SpringBoot嵌套事務(wù)詳解及失效解決方案

    在復雜的業(yè)務(wù)場景中,嵌套事務(wù)可以幫助我們更加精細地控制數(shù)據(jù)的一致性,然而,在 Spring Boot 中,如果嵌套事務(wù)的配置不當,可能會導致事務(wù)不生效的問題,尤其是在同一個類中進行方法調(diào)用時,本文將詳細介紹嵌套事務(wù)的原理、失效的原因以及解決方案
    2025-01-01
  • SpringBoot3.0集成MybatisPlus的實現(xiàn)方法

    SpringBoot3.0集成MybatisPlus的實現(xiàn)方法

    本文主要介紹了SpringBoot3.0集成MybatisPlus的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能

    Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能

    Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強大。接下來通過本文給大家分享Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能,感興趣的朋友一起看看吧
    2019-11-11
  • java如何確定一個鏈表有環(huán)及入口節(jié)點

    java如何確定一個鏈表有環(huán)及入口節(jié)點

    這篇文章主要介紹了java如何確定一個鏈表有環(huán)及入口節(jié)點,想了解數(shù)據(jù)結(jié)構(gòu)的同學可以參考下
    2021-04-04

最新評論

柯坪县| 渝中区| 饶河县| 鹤山市| 漳平市| 阜新| 鹿邑县| 太湖县| 博客| 穆棱市| 岗巴县| 贵德县| 卢湾区| 仪征市| 湘乡市| 新余市| 韩城市| 江孜县| 湄潭县| 遂平县| 寿光市| 广德县| 滕州市| 绥芬河市| 新郑市| 咸丰县| 将乐县| 台南市| 汶上县| 静海县| 久治县| 芜湖县| 临城县| 毕节市| 长白| 东山县| 杭锦旗| 林州市| 子长县| 甘孜| 华安县|