java基礎——-對象多態性!

來源:互聯網
上載者:User

1.向上轉型 
   將父類的對象轉為子類對象。自動轉換。
   通過其子類進行父類的執行個體化操作,則如果調用的方法被子類覆寫過。
   則肯定是調用被覆寫過的方法。
   注意點:
   轉型後在子類中是無法找到在子類中定義的新方法的。
2.向下轉型
   將父類的對象轉為子類對象。需要強制轉換。
   在進行對象向下轉型的時候。有一個注意點。
   如果兩個沒有關係的對象之間發生了轉換了關係,則肯定出現此異常。
     
   注意 :要想產生對象的向下轉型。則肯定是要先產生一個向上轉型。

3.對象的多態性的應用

4.instanceof 關鍵字

class A{     // 定義類Apublic void fun1(){  // 定義fun1()方法System.out.println("A --> public void fun1(){}") ;}public void fun2(){    this.fun1() ;  // 調用fun1()方法}};class B extends A{public void fun1(){  // 此方法被子類覆寫了System.out.println("B --> public void fun1(){}") ;}public void fun3(){System.out.println("B --> public void fun3(){}") ;}};class C extends A{public void fun1(){  // 此方法被子類覆寫了System.out.println("C --> public void fun1(){}") ;}public void fun5(){System.out.println("C --> public void fun5(){}") ;}};public class InstanceofDemo02{public static void main(String asrgs[]){fun(new B()) ;fun(new C()) ;}public static void fun(A a){a.fun1() ;if(a instanceof B){B b = (B) a ;b.fun3() ;}if(a instanceof C){     C c = (C) a ;     c.fun5() ;}}};

在java 中可以使用instanceof 關鍵字來判斷一個對象到底是那個類的執行個體。
     在開發中一定要注意,對於向下轉型的操作最好增加instanceof驗證。
     以保證轉型時候不會發生ClassCastException
    
     要增加新的子類,肯定要修改fun 方法,這樣一來就失去了靈活性。所以
     在程式的開發中重點在父類中。只要父類設計足夠合理。則開發肯定會非常的方便。
     在開發中一定要記住以下一點:
     一個類永遠不要去繼承一個實現好的類。而只能去繼承一個抽象類別或介面。

5.Object 類
     如果一個類在沒有定義的時候沒有指定繼承的是那個類。則就是預設是繼承Object類。
     對象在列印的時候是會預設去調去toString()方法的。

6.封裝類
     一切皆是對象。八大資料類型不是對象。
     所以將八大資料類型封裝成封裝類。
     如 
     基礎資料型別 (Elementary Data Type)      封裝類
    int  ------------------------>Integer,    
   char ------------------------>Character,
   short------------------------>Short, 
   double ---------------------->Double,
   long ------------------------>Long,  
   float ----------------------->Float.
   boolean --------------------->Boolean, 
   byte ------------------------>Byte.

  此八大封裝類所繼承的父類不一定相同。

  裝箱和拆箱
  
  裝箱:將基礎資料型別 (Elementary Data Type)變成封裝類。
  int x = 30 ;   
  Integer f = new Integer(x);   //裝箱
  拆箱:將封裝類變成基礎資料型別 (Elementary Data Type)。
  y = f.intValue();  //拆箱
  
  在JDK1.5 後有了自動的去裝箱的自動的拆箱功能。
7.匿名內部類

interface A{public void printInfo() ; // }class X {public void fun1(){this.fun2(new A(){public void printInfo(){System.out.println("Hello World!!!") ;}}) ;}public void fun2(A a){a.printInfo() ;}};public class NoInnerClassDemo02{public static void main(String args[]){new X().fun1() ;  // 執行個體化X類的對象,並調用fun1()方法}};其中的new A()只使用了一個,故可以去使用匿名內部類。
  1. 其中的new A()只使用了一個,故可以去使用匿名內部類。  

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.