java動(dòng)態(tài)方法調(diào)度實(shí)例分析
本文實(shí)例講述了java動(dòng)態(tài)方法調(diào)度。分享給大家供大家參考,具體如下:
動(dòng)態(tài)方法調(diào)度:
1. 訪問一個(gè)引用型的變量的非靜態(tài)方法,運(yùn)行時(shí)與實(shí)際引用的對象的方法綁定。
2. 訪問一個(gè)引用型的變量的靜態(tài)方法,運(yùn)行時(shí)與聲明的類的方法綁定。
3. 訪問一個(gè)引用型的變量的成員變量(包括靜態(tài)變量和實(shí)例變量),運(yùn)行時(shí)與聲明的類的成員變量綁定。
第3點(diǎn)尤其注意啊,之前我從來沒注意過啊
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();
}
}
運(yùn)行結(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(); //等價(jià)于Person.getInfo();
}
}
運(yùn)行結(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);
}
}
運(yùn)行結(jié)果:fanther
將成員變量變?yōu)閟tatic類型的也是一樣的
另外對于如下兩個(gè)變量
Students = new Student(); Person t = new Student();
不過這兩者實(shí)際上是有區(qū)別的,當(dāng)子類Student中有了自己的個(gè)性方法(在父類中沒有的)時(shí),比如有了方法
public goSchool(){
}
那么只有s可以調(diào)用這個(gè)goSchool方法
而t不能調(diào)用
希望本文所述對大家java程序設(shè)計(jì)有所幫助。
- java實(shí)現(xiàn)動(dòng)態(tài)代理方法淺析
- Java實(shí)現(xiàn)時(shí)間動(dòng)態(tài)顯示方法匯總
- Java窗體動(dòng)態(tài)加載磁盤文件的實(shí)現(xiàn)方法
- Java動(dòng)態(tài)調(diào)用類中方法代碼
- Java 將字符串動(dòng)態(tài)生成字節(jié)碼的實(shí)現(xiàn)方法
- 代理模式之Java動(dòng)態(tài)代理實(shí)現(xiàn)方法
- 十分鐘理解Java中的動(dòng)態(tài)代理
- 詳解java中動(dòng)態(tài)代理實(shí)現(xiàn)機(jī)制
- Java中的靜態(tài)綁定和動(dòng)態(tài)綁定詳細(xì)介紹
相關(guān)文章
Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例
這篇文章主要介紹了Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例,幫助大家方便的進(jìn)行文件格式轉(zhuǎn)換,完成需求,感興趣的朋友可以了解下2020-11-11
簡單了解Thymeleaf語法 數(shù)據(jù)延遲加載使用實(shí)例
這篇文章主要介紹了簡單了解Thymeleaf語法 數(shù)據(jù)延遲加載使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2010-05-05
JavaEE中struts2實(shí)現(xiàn)文件上傳下載功能實(shí)例解析
這篇文章主要為大家詳細(xì)介紹了JavaEE中struts2實(shí)現(xiàn)文件上傳下載功能實(shí)例,感興趣的小伙伴們可以參考一下2016-05-05
Java 基于AQS實(shí)現(xiàn)自定義同步器的示例
這篇文章主要介紹了Java 基于AQS實(shí)現(xiàn)自定義同步器的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03
詳解spring cloud config整合gitlab搭建分布式的配置中心
這篇文章主要介紹了詳解spring cloud config整合gitlab搭建分布式的配置中心,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01
使用Apache Spark進(jìn)行Java數(shù)據(jù)分析的步驟詳解
今天我們將探討如何使用Apache Spark進(jìn)行Java數(shù)據(jù)分析,Apache Spark是一個(gè)強(qiáng)大的大數(shù)據(jù)處理引擎,它支持批處理和流處理,特別適合處理大規(guī)模數(shù)據(jù)集,在Java中使用Spark,我們可以利用其強(qiáng)大的數(shù)據(jù)處理能力來進(jìn)行各種數(shù)據(jù)分析任務(wù),需要的朋友可以參考下2024-07-07
Springboot+aop實(shí)現(xiàn)配置多數(shù)據(jù)源的示例代碼
本文介紹了如何使用SpringAOP和注解實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換,通過自定義注解和ThreadLocal存儲數(shù)據(jù)上下文信息,重寫AbstractRoutingDataSource類并使用自定義切面來實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源的切換,感興趣的可以了解一下2024-11-11
Java Web端程序?qū)崿F(xiàn)文件下載的方法分享
這篇文章主要介紹了Java Web端程序?qū)崿F(xiàn)文件下載的方法分享,包括一個(gè)包含防盜鏈功能的專門針對圖片下載的程序代碼示例,需要的朋友可以參考下2016-05-05
Java實(shí)體映射工具M(jìn)apStruct使用方法詳解
MapStruct是用于代碼中JavaBean對象之間的轉(zhuǎn)換,例如DO轉(zhuǎn)換為DTO,DTO轉(zhuǎn)換為VO,或Entity轉(zhuǎn)換為VO等場景,這篇文章主要給大家介紹了關(guān)于Java實(shí)體映射工具M(jìn)apStruct使用的相關(guān)資料,需要的朋友可以參考下2021-11-11

