第三次学JAVA再学不好就吃翔(part34)--多态的成员访问
生活随笔
收集整理的這篇文章主要介紹了
第三次学JAVA再学不好就吃翔(part34)--多态的成员访问
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
學(xué)習(xí)筆記,僅供參考
文章目錄
- 面向?qū)ο?/li>
- 多態(tài)
- 多態(tài)概述
- 多態(tài)的成員訪問
- 成員變量
- 成員方法
- 靜態(tài)成員方法
面向?qū)ο?/h2>
多態(tài)
多態(tài)概述
- 多態(tài)的概述
- 事物存在的多種形態(tài)
- 多態(tài)實現(xiàn)的前提
- 要有繼承關(guān)系
- 要有方法重寫
- 要有父類引用指向子類對象
- 舉個例子
class PolymorphicTest1 {public static void main(String[] args) {Animal a = new Bunny(); //父類引用指向子類對象a.eat();}
}class Animal {public void eat() {System.out.println("動物吃飯");}
}class Bunny extends Animal {public void eat() {System.out.println("兔子吃提草");}
}
- 事物存在的多種形態(tài)
- 要有繼承關(guān)系
- 要有方法重寫
- 要有父類引用指向子類對象
輸出:
兔子吃提草多態(tài)的成員訪問
成員變量
我們先來看一個例子:
class PolymorphicTest1 {public static void main(String[] args) {Father f = new Son();System.out.println(f.num);} }class Father {int num = 10; }class Son extends Father {int num = 20; }輸出:
10咦?為啥結(jié)果是10呢?按照上面的例子,我還以為是20呢!
我們來畫一個內(nèi)存圖來了解一下:
對于成員變量來說,編譯看左邊(Father),運行也看左邊(Father).
在父類引用指向子類對象中,我們左邊的數(shù)據(jù)類型是Father,所以我們只能拿到父類的成員變量num。
成員方法
我們看一段代碼:
class PolymorphicTest1 {public static void main(String[] args) {Father f = new Son();f.print();} }class Father {int num = 10;public void print() {System.out.println("Father");} }class Son extends Father {int num = 20;public void print() {System.out.println("Son");} }輸出:
Son對于成員方法來說,編譯看左邊(Father),運行看右邊(Son).
在父類引用指向子類對象中,編譯時JAVA看左邊(Father)是否有print()方法,而運行的時候卻調(diào)用的是右邊(Son)的print()方法。也就是說,如果父類(Father)中沒有print()方法,那么編譯將無法通過。
靜態(tài)成員方法
我們看一段代碼:
class PolymorphicTest1 {public static void main(String[] args) {Father f = new Son();f.print2(); //相當(dāng)于Father.print2();} }class Father {int num = 10;public void print() {System.out.println("Father");}public static void print2() {System.out.println("Static Father");} }class Son extends Father {int num = 20;public void print() {System.out.println("Son");}public static void print2() {System.out.println("Static Son");} }輸出:
Static Father對于靜態(tài)成員方法來說,編譯看左邊(Father),運行也看左邊(Father).
- 總結(jié)
只有非靜態(tài)的成員方法是編譯看左邊(Father),運行看右邊(Son),其他的都是編譯看左邊(Father),運行也看左邊(Father)
總結(jié)
以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part34)--多态的成员访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初恋给你留下了怎样的爱
- 下一篇: 第三次学JAVA再学不好就吃翔(part