天天看點

向上轉型,向下轉型

要給學生們講卷子,不知道這個轉型問題怎麼講,搜了幾個例子,才發現這個例子最合适,也好懂。

向上轉型,向下轉型
向上轉型,向下轉型

class   Chinese

向上轉型,向下轉型

{   

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

          public   static   void   print()

向上轉型,向下轉型
向上轉型,向下轉型

                  System.out.println("this   is   中國人");   

向上轉型,向下轉型
向上轉型,向下轉型

          }   

向上轉型,向下轉型
向上轉型,向下轉型

  }   

向上轉型,向下轉型
向上轉型,向下轉型

  class   Guangdongren   extends   Chinese

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

                  System.out.println("this   is   廣東人   ");   

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

  class   HunanRen   extends   Chinese

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

                  System.out.println("this   is   湖南人   ");   

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

  class   GuangzhouRen   extends   Guangdongren

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

                  System.out.println("this   is   廣州人     ");   

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

  public   class   Test   

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

            public   static   void   main(String   args[])

向上轉型,向下轉型
向上轉型,向下轉型
向上轉型,向下轉型

                    Chinese   c=new   Chinese();//這樣編譯可以通過,但運作會抛出異常   

向上轉型,向下轉型

                      HunanRen   h=(HunanRen)c;//     這是因為向下轉型錯誤,中國人不一定是湖南人,這裡   

向上轉型,向下轉型

                                                                    //是不是可以這樣了解要将c強制轉換成一個HunanRen     

向上轉型,向下轉型
向上轉型,向下轉型

                    HunanRen   h=new   HunanRen();//這樣就沒有問題,這是向上轉型,   

向上轉型,向下轉型

                    Chinese   c=(Chinese)h;         //湖南人一定是中國人這是是否可以了解為将h轉換成Cinese   

向上轉型,向下轉型

                Chinaese   h=new   HunanRen();//向上轉型   

向上轉型,向下轉型

                    h.print();   

向上轉型,向下轉型

            }   

向上轉型,向下轉型

      }   

向上轉型,向下轉型

繼續閱讀