java動態(tài)方法調(diào)度實例分析
本文實例講述了java動態(tài)方法調(diào)度。分享給大家供大家參考,具體如下:
動態(tài)方法調(diào)度:
1. 訪問一個引用型的變量的非靜態(tài)方法,運行時與實際引用的對象的方法綁定。
2. 訪問一個引用型的變量的靜態(tài)方法,運行時與聲明的類的方法綁定。
3. 訪問一個引用型的變量的成員變量(包括靜態(tài)變量和實例變量),運行時與聲明的類的成員變量綁定。
第3點尤其注意啊,之前我從來沒注意過啊
1. 非靜態(tài)方法:
public class Person { public String name; public void getInfo() { System.out.println("父類"); } } public class Student extends Person { public void getInfo() { // 方法重寫 super.getInfo(); // 調(diào)用父類的方法 System.out.println("子類"); } public static void main(String[] args) { Person s = new Student(); Person t = new Person(); s = t; // S的對象類型是父類,即Person類 s.getInfo(); } }
運行結(jié)果為:父類
2. 靜態(tài)方法:
public class Person { public String name; public static void getInfo() { System.out.println("父類"); } } public class Student extends Person { Publics static void getInfo() { // 方法重寫 System.out.println("子類"); } public static void main(String[] args) { Person s = new Student(); s.getInfo(); //等價于Person.getInfo(); } }
運行結(jié)果為:父類
3. 成員變量
public class erson { public String name = "father"; public void getInfo() { System.out.println("父類"); } } public class Student extends Person { public String name = "son"; public void getInfo() { // 方法重寫 super.getInfo(); // 調(diào)用父類的方法 System.out.println("子類"); } public static void main(String[] args) { Person s = new Student(); Person t = new Person(); s = t; System.out.println(s.name); } }
運行結(jié)果:fanther
將成員變量變?yōu)閟tatic類型的也是一樣的
另外對于如下兩個變量
Students = new Student(); Person t = new Student();
不過這兩者實際上是有區(qū)別的,當(dāng)子類Student中有了自己的個性方法(在父類中沒有的)時,比如有了方法
public goSchool(){ }
那么只有s可以調(diào)用這個goSchool方法
而t不能調(diào)用
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
Java應(yīng)用注冊成Windows服務(wù)實現(xiàn)自啟的教程詳解
這篇文章主要給大家介紹了Java應(yīng)用注冊成Windows服務(wù)實現(xiàn)自啟的教程,文中有詳細(xì)的代碼示例和圖文講解供大家參考,具有一定的參考價值,需要的朋友可以參考下2024-02-02mybatis-plus常用注解@TableId和@TableField的用法
本文主要介紹了mybatis-plus常用注解@TableId和@TableField的用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04java編程下字符串的16位,32位md5加密實現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava編程下字符串的16位,32位md5加密實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09Spring Cloud如何使用Feign構(gòu)造多參數(shù)的請求
這篇文章主要介紹了Spring Cloud如何使用Feign構(gòu)造多參數(shù)的請求,以GET以及POST方法的請求為例進(jìn)行講解,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03MapStruct實體轉(zhuǎn)換及List轉(zhuǎn)換的方法講解
今天小編就為大家分享一篇關(guān)于MapStruct實體轉(zhuǎn)換及List轉(zhuǎn)換的方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03一篇文章徹底弄懂SpringBoot項目jdk版本及依賴不兼容問題
這篇文章主要給大家介紹了關(guān)于徹底弄懂SpringBoot項目jdk版本及依賴不兼容問題的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-01-01