1. 程式人生 > >Java中多態的理解

Java中多態的理解

nbsp 運行時 初始化 類對象 編譯 方法 分享 code 創建子類

----------------------------------

最近在學習Java,接觸了

多態的概念,用了好久才

搞懂,來給大家分享一下

博主的想法;

----------------------------------

多態,就是指一個對象在

不同時候體現出來的不同

狀態;

----------------------------------

多態的實現要有3個前提:

  1.要有繼承關系;

  2.要有方法重寫;

  3父類引用指向子類對象;

    即 父 f = new 子();

----------------------------------

多態的成員訪問特點:

  1.成員變量:

    編譯看左邊,運行看左邊;

  2.靜態成員變量:

    覆蓋父類的值;

  3.構造方法:

    創建子類對象的時候,訪問父類的構造方法,對父類的數據初始化;

  4.成員方法:

    編譯看左邊,運行看右邊;(即父類和子類都有該方法,否則就報錯,運行時是調用用子類的方法)

  5.靜態成員方法:

    編譯看左邊,運行看左邊;

----------------------------------

總結:

  只有重寫後才會使用子類

  的方法;靜態方法與類有

  關(通過類名加“.”訪問)

  ,算不上重寫,所以父類的

  靜態方法不會被覆蓋;成

  員變量和靜態成員變量不

  存在重寫,所以不會被覆蓋;

  所以只有成員方法才會調

  用子類的方法。

----------------------------------

下面給出一個實例來說明:

 1 public class DuoTai {
 2     public static void main(String[] args) {
 3         
 4         Fu f = new Zi();//fu,zi         //這裏是多態
 5         System.out.println(f.num);      //
100(fu的值) 6 System.out.println(f.a); //300(fu的值) 7 //System.out.println(f.b); //不能訪問子類獨有(父類沒有)的成員變量;ERROR 8 f.method(); //child //動態成員方法 9 f.fun(); //Fu //靜態成員方法 10 System.out.println(); 11 12 Zi z = new Zi();//fu,zi      //這裏是普通的對象創建方法 13 System.out.println(z.num); //200(zi的值) 14 System.out.println(z.a); //400(zi的值) 15 System.out.println(z.zi); //500 16 z.method(); //child 17 z.fun(); //Zi 18 System.out.println(); 19 20 Fu m = new Fu();//zi       //這裏是普通的對象創建方法 21 System.out.println(m.num); //100(fu的值) 22 System.out.println(m.a); //300(fu的值) 23 m.method(); //father 24 m.fun(); //Fu 25 } 26 } 27 class Fu{ 28 public int num = 100;     //fu的成員變量 29 public static int a = 300;  //fu的靜態成員變量 30 public Fu(){           //fu的構造方法 31 System.out.println("fu"); 32 } 33 public void method(){     //fu的成員方法 34 System.out.println("father"); 35 } 36 public static void fun(){   //fu的靜態成員方法 37 System.out.println("Fu"); 38 } 39 } 40 class Zi extends Fu{ 41 public int num = 200;      //zi的成員變量 42 public static int a = 400;   //zi的靜態成員變量 43 public int b = 500;       //zi的成員變量(獨有的) 44 public Zi(){           //zi的構造方法 45 System.out.println("zi"); 46 } 47 public void method(){     //zi的成員方法 48 System.out.println("child"); 49 } 50 public static void fun(){   //zi的靜態成員方法 51 System.out.println("Zi"); 52 } 53 }

------------------------------

上面就是我對多態的理

解,如有錯誤,歡迎大

家指正;感謝閱讀;

------------------------------

Java中多態的理解