26Java中的多态
生活随笔
收集整理的這篇文章主要介紹了
26Java中的多态
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.多態的概述
多態指的是對象,即對象既有自己的形態,也有其父類的形態。
2.多態的格式和使用(Day111104.Demo01)
Demo01Multi.java
package Demo01;/* * 代碼中體現多態性,其實就是一句話:父類引用指向子類對象。 * 這就體現了多態的特點,一只貓被當作動物來對待 * 格式: * 父類名稱 對象名 = new 子類名稱(); * 或者 * 接口名稱 對象名 = new 實現類名稱(); * */ public class Demo01Multi {public static void main(String[] args) {//使用多態的寫法,左側父類的引用指向了右側子類的對象。Fu ha = new Zi();ha.method();//子類方法(右邊new的是誰,就是誰的)ha.methodFu();//父類特有方法(子類沒有便向上找父)}}Fu.java
package Demo01;public class Fu {public void method() {System.out.println("父類方法");}public void methodFu() {System.out.println("父類特有方法");} }Zi.java
package Demo01;public class Zi extends Fu{@Overridepublic void method() {System.out.println("子類方法");} }3.多態中成員變量的使用特點(Day111104.Demo02)
Demo02MultiField.java
package Demo02;/* * 訪問成員變量的兩種方式: * 1.直接通過對象名稱訪問成員變量:看等號左邊是誰,優先用誰,沒有則向上找 * 2.間接通過成員方法訪問:看該方法屬于誰,優先用誰,沒有則向上找 * */public class Demo02MultiField {public static void main(String[] args) {//使用多態的寫法,父類引用指向子類對象Fu obj = new Zi();//成員變量是不能進行覆蓋重寫的System.out.println(obj.num);//父的10//System.out.println(obj.numZi);//2.間接通過成員方法訪問obj.showNum();//父:10,子類沒有覆蓋重寫時候;子:20,子類進行覆蓋重寫時候} }Fu.java
package Demo02;public class Fu {int num = 10;public void showNum() {System.out.println(num);} }Zi.java
package Demo02;public class Zi extends Fu{int num = 20;int numZi = 30;@Overridepublic void showNum() {System.out.println(num);} }4.多態中成員方法的使用特點
Fu.java
package Demo02;public class Fu {int num = 10;public void showNum() {System.out.println(num);}public void method() {System.out.println("父類方法");}public void methodFu() {System.out.println("父類特有方法");} }Zi.java
package Demo02;public class Zi extends Fu{int num = 20;int numZi = 30;@Overridepublic void showNum() {System.out.println(num);}@Overridepublic void method() {System.out.println("子類重寫父類的方法");}public void methodZi() {System.out.println("子類特有方法");} }Demo02MultiMethod.java
package Demo02; /* * 在多態代碼中,成員方法的訪問規則是: * 1.看new的是誰,就優先用誰,沒有則向上找。 * * 口訣:編譯看左邊,運行看右邊。 * * 對比: * 成員變量:編譯看左邊,運行還看左邊。 * 成員方法:編譯看左邊,運行看右邊。 * */ public class Demo02MultiMethod {public static void main(String[] args) {Fu ha = new Zi();ha.method();//子類重寫父類的方法(父子都有,優先用子)ha.methodFu();//父類特有方法(子類沒有,父類有,則向上找到父)//編譯看左邊,左邊是Fu,Fu當中沒有methodZi方法,所以編譯報錯。//Fu.methodZi();//錯誤寫法} }5.使用多態的好處
左邊的代碼一直都是不變的,讓代碼更加靈活統一。多態其實就是從老板的角度來看的,我不管你怎么做,我只要你工作就行。
總結
以上是生活随笔為你收集整理的26Java中的多态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 25接口之间的单继承
- 下一篇: java数据类型_Java 变量、表达式