请教一个向上转型的问题
public   class   AppTest 
 {   
 	{ 
 		Shapes   fatcher   =   new   Circle(); 
 		fatcher.funA(); 
 	}   
 }     
 class   Shapes 
 { 
 	public   void   funA() 
 	{ 
 		funB(); 
 	}  	 
 	public   void   funB() 
 	{ 
 		System.out.println( "这是Shapes类的 "); 
 	} 
 }   
 class   Circle   extends   Shapes 
 {	 
 	public   void   funB() 
 	{ 
 		System.out.println( "这是Circle类的 "); 
 	} 
 }     
 这里我调用 
 Shapes   fatcher   =   new   Circle(); 
 fatcher.funA(); 
 ..这里子类Circle没有funA()方法,就调用的父类funA();那父类里面的funA方法.应该调用父类的funB(),为什么调用子类的funB()呢. 
 我现在对多态的理解还没有入门啊
------解决方案--------------------这样理解应该容易理解一点 
 子类继承了父类的方法  
 除了重载外的方法 其余的方法只是没有写出来  但是记住子类仍然拥有这些方法   
 由于Shapes fatcher=new Circle();  
 创建的是Circle类的实例而非其父类的  所以要调用Circle类的方法
------解决方案--------------------楼主说“子类Circle没有funA()方法,就调用的父类funA()”理解有误 
 子类Circle其实已经从父类那里继承了funA()
------解决方案--------------------不要被楼上的误导。 
 这正是多态性实现的基础。虽然你声明的是Shape类,但是你得到的实例是Circle类的,所以方法调用都是针对Circle类的。而方法funA,因为是public方法,所以Circle类继承了它,又因为没有重写(override)funA,所以调用funA的时候调用的是完全继承自Shape的方法funA,它调用了funB;因为实例本身是Circle,所以调用了Circle的funB。 
 整个过程没有任何麻烦可言。