捆饶新手N长时间的问题
 abstract   class   Employee   {               
             abstract   void   fangfa(); 
             public   static   void   main(String   args[]) 
             { 
                         Employee   a; 
                         zilei   b   =new   zilei(); 
                         zilei2   c=   new   zilei2(); 
                         a=b; 
                         a.fangfa(); 
                         a=c; 
                         a.fangfa();   
             } 
 }   
 class   zilei   extends   Employee 
 {         int   a=10; 
             void   fangfa() 
             { 
                         System.out.println( "啊啊啊啊 "+a);               
             } 
 }   
 class   zilei2   extends   Employee 
 {         int   a=20; 
             void   fangfa() 
             { 
                         System.out.println( "哈哈哈俣 "+a);               
             } 
 }   
 上面这代码里的a=b;   a=c;不知道是什么意思 
 好像不是赋值吧。   我一直认为它是赋值   所以想不明白      。 
 请问它到底是什么意思啊   能不能用通俗的语言讲一下   我理解能力不太好!   谢谢!
------解决方案--------------------子类is-a父类,也就是说一个子类的instance is-a父类的instance。 
 在给出的程序中,b是一个zilei的instance,同时也是一个Employee的instance。   
 那zilei和zilei2里的那个变量赋给谁了? 
 抽像类里的没有变量啊,那它是怎么接收zilei和zilei2里那两个变量的值的?   
 ==> 那些变量和方法没有赋给谁,它们还在自己的instance里面乖乖呆着呢。问题的关键在于怎么才能使用这些变量和方法。   
 对方法来说,a.fangfa();运行的方法是有a的runtime type,也就是具体instance的类型来决定的,a所reference的值是zilei的一个instance,所以对于方法来说,就是zilei的这个instance的方法会运行。   
 对于变量来说,a.someValue;是有reference variable type决定的,也就是a的type决定的,也就是Employee。如果Employee里面定义了变量,那么它们可以通过a.someValue;使用,但是不可以通过a使用子类里的变量。   
 仔细读书,这些都在Java Language Specification里讲得很清楚。
------解决方案--------------------你说的问题,其实很简单,在声明的时候你的zilei1 b = new zilei1();和zilei2 c = new zilei2();是多余的.你可以直接用Employee a = new zilei1();然后a.fangfa();因为Employee是父类,所以你可以创建他的类型,但是他是抽象类,不能创建实例.但是可以引用实例化过的子类,就像上面那样写. 
 a = b ; 就是说,本来你b是zilei1 的一个变量,引用了zilei1的对象,也就是你zilei1里的方法,现在却把这个zilei1类型变量b引用给了Employee a类,也就是把new zilei1();这个引用给了a . 
 在JAVA里面父类类型,可以引用子类类型,因为父类有的东西,子类都有,所以可以直接引用子类,同样,子类类型也可以引用父类的对象,但是这样就需要强制转换了,而且很可能出现异常,导致程序出错,要转换可以这样 
 fulei a = new fulei(); 
 a.fangfa(); 
 zilei b = (zilei)a.fangfa();