天天看点

向上转型,向下转型

要给学生们讲卷子,不知道这个转型问题怎么讲,搜了几个例子,才发现这个例子最合适,也好懂。

向上转型,向下转型
向上转型,向下转型

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();   

向上转型,向下转型

            }   

向上转型,向下转型

      }   

向上转型,向下转型

继续阅读