java動態方法調度實例
動態方法調度:
1. 訪問一個引用型的變量的非靜態方法,運行時與實際引用的對象的方法綁定。
2. 訪問一個引用型的變量的.靜態方法,運行時與聲明的類的方法綁定。
3. 訪問一個引用型的變量的成員變量(包括靜態變量和實例變量),運行時與聲明的類的成員變量綁定。
第3點尤其注意啊,之前我從來沒注意過啊
1. 非靜態方法:
public class Person {public String name; public void getInfo() { tln("父類"); }}public class Student extends Person { public void getInfo() { // 方法重寫 nfo(); // 調用父類的方法 tln("子類");}public static void main(String[] args) { Person s = new Student(); Person t = new Person(); s = t; // S的對象類型是父類,即Person類 nfo();}}
運行結果為:父類
2. 靜態方法:
public class Person {public String name; public static void getInfo() { tln("父類"); }}public class Student extends Person {Publics static void getInfo() { // 方法重寫tln("子類");}public static void main(String[] args) {Person s = new Student();nfo(); //等價於nfo();}}
運行結果為:父類
3. 成員變量
public class erson {public String name = "father"; public void getInfo() { tln("父類"); }}public class Student extends Person {public String name = "son";public void getInfo() { // 方法重寫nfo(); // 調用父類的方法tln("子類");}public static void main(String[] args) {Person s = new Student();Person t = new Person();s = t;tln();}}
運行結果:fanther
將成員變量變為static類型的也是一樣的
另外對於如下兩個變量
Students = new Student();Person t = new Student();
不過這兩者實際上是有區別的,當子類Student中有了自己的個性方法(在父類中沒有的)時,比如有了方法
public goSchool(){}
那麼只有s可以調用這個goSchool方法
而t不能調用
希望本文所述對大家java程序設計有所幫助。
-
Java中如何獲取Spring中配置的bean
Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。在Java中如何獲取Spring中配置的'bean?下面本站小編帶大家一起來看看詳細操作,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!一、什麼是Spring?Spring是一個輕量級的控...
-
全國計算機等級《二級JAVA》命題預測試卷
以下是本站小編帶來的全國計算機等級《二級JAVA》命題預測試卷,歡迎學習!更多內容請關注應屆畢業生考試網!1、軟件生命週期是指()。A.軟件產品從提出、實現、使用維護到停止使用退役的過程B.軟件從需求分析、設計、實現到測試完成的過程,C.軟件的開發過程D.軟件...
-
Java語法基礎for語句練習
本文是本站小編搜索整理的關於Java語法基礎for語句練習,供參考學習,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!控制語句——for練習語句的嵌套應用累加求和,計數器循環嵌套一、語句的嵌套應用語句嵌套形式。其實就是語句中...
-
計算機二級JAVA考試構建JAVA程序2017
很多人一見到説要編程就以為很難,其實只有一點一滴學知識點也不難,下面是小編整理的計算機二級JAVA考試構建JAVA程序介紹,歡迎閲讀!第一個javaapplicationjava程序分為javaapplication(java應用程序)和javaapplet(java小應用程序)兩種。下面讓我們編寫一個java應...