欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

我們這樣假設下,super(超類)、this(當前類對象)、show(方法)、object(對象),方法調用優(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)方法,③有效;

④就不作演示,根據①②③很容易得出結論;

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

補充知識:Java中關于靜態(tài)塊,初始化快,構造函數的執(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();
  }
}

輸出結果:

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í)行如下代碼:

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

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

相關文章

  • 創(chuàng)建并運行一個java線程方法介紹

    創(chuàng)建并運行一個java線程方法介紹

    這篇文章主要介紹了創(chuàng)建并運行一個java線程,涉及線程代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java中JVM的雙親委派、內存溢出、垃圾回收和調優(yōu)詳解

    Java中JVM的雙親委派、內存溢出、垃圾回收和調優(yōu)詳解

    這篇文章主要介紹了Java中JVM的雙親委派、內存溢出、垃圾回收和調優(yōu)詳解,類加載器是Java虛擬機(JVM)的一個重要組成部分,它的主要作用是將類的字節(jié)碼加載到內存中,并生成對應的Class對象,需要的朋友可以參考下
    2023-07-07
  • 值得收藏!教你如何在IDEA中快速查看Java字節(jié)碼

    值得收藏!教你如何在IDEA中快速查看Java字節(jié)碼

    開發(fā)中如果我們想看JVM虛擬機怎么編譯我們的Java文件,生成字節(jié)碼的,用IDEA工具就可以查看,本篇文章就給大家詳細介紹,對正在學習java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • mybatis中bind標簽和concat的使用說明

    mybatis中bind標簽和concat的使用說明

    這篇文章主要介紹了mybatis中bind標簽和concat的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 關于Java中的IO流總結(推薦)

    關于Java中的IO流總結(推薦)

    下面小編就為大家?guī)硪黄P于Java中的IO流總結(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Spring中的NamespaceHandler接口及相關軟件包說明

    Spring中的NamespaceHandler接口及相關軟件包說明

    這篇文章主要介紹了Spring中的NamespaceHandler接口及相關軟件包說明,NamespaceHandler 接口,DefaultBeanDefinitionDocumentReader 使用該接口來處理在spring xml 配置文件中自定義的命名空間,需要的朋友可以參考下
    2023-12-12
  • java實現簡單貪吃蛇小游戲

    java實現簡單貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了java實現簡單貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Java應用打包成Docker鏡像

    Java應用打包成Docker鏡像

    這篇文章主要為大家介紹了Java應用打包成Docker鏡像的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Springboot整合JPA配置多數據源流程詳解

    Springboot整合JPA配置多數據源流程詳解

    這篇文章主要介紹了Springboot整合JPA配置多數據源,JPA可以通過實體類生成數據庫的表,同時自帶很多增刪改查方法,大部分sql語句不需要我們自己寫,配置完成后直接調用方法即可,很方便
    2022-11-11
  • Spring中自動裝配的4種方式

    Spring中自動裝配的4種方式

    今天小編就為大家分享一篇關于Spring中自動裝配的4種方式,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論