要给学生们讲卷子,不知道这个转型问题怎么讲,搜了几个例子,才发现这个例子最合适,也好懂。
class   Chinese{   
            
          public   static   void   print(){   
                  System.out.println("this   is   中国人");   
                    
          }   
          
  }   
  class   Guangdongren   extends   Chinese{   
          public   static   void   print(){   
                  System.out.println("this   is   广东人   ");   
          }   
            
  }   
  class   HunanRen   extends   Chinese{   
          public   static   void   print(){   
                  System.out.println("this   is   湖南人   ");   
          }   
  }   
  class   GuangzhouRen   extends   Guangdongren{   
          public   static   void   print(){   
                  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();   
            }   
      }   
class   Chinese{   
            
          public   static   void   print(){   
                  System.out.println("this   is   中国人");   
                    
          }   
          
  }   
  class   Guangdongren   extends   Chinese{   
          public   static   void   print(){   
                  System.out.println("this   is   广东人   ");   
          }   
            
  }   
  class   HunanRen   extends   Chinese{   
          public   static   void   print(){   
                  System.out.println("this   is   湖南人   ");   
          }   
  }   
  class   GuangzhouRen   extends   Guangdongren{   
          public   static   void   print(){   
                  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();   
            }   
      }   
                    
                

