子类变量转换为父类问题
第一段:
public class Test_Super {
     public static void main(String [] args){   
	  Test_father father=new Test_father();
       Test_son son=new Test_son();                
      father=son;
       father.display();       
}
}
class Test_father{
	public void display(){
		System.out.println("This is father.");
	}
}
class Test_son extends Test_father{
	public void display(){
		System.out.println("This is son.");
	}
}
第二段:
public class Test_Super {
     public static void main(String [] args){   
	  Test_father father=new Test_father();
       Test_son son=new Test_son();                
       father=son;
       father.show();       
}
}
class Test_father{
	public void display(){
		System.out.println("This is father.");
	}
}
class Test_son extends Test_father{
	public void show(){
		System.out.println("This is son.");
	}
}
两段代码不同之处在于红色部分。
第一段,方法覆盖了以后,将子类变量转换为父类就可以使用子类中的方法了。
而第二段则显示非法使用。这是什么原因?
------解决方案--------------------father是一个Test_father类型的变量,编译的时候就发现Test_father没有show这个方法,就出错了
而第一种情况是动态绑定,所谓的父类引用指向子类对象
------解决方案--------------------楼主这写的是关于重写的
  先解释下楼主的代码:
           Test_father father=new Test_father();
 Test_son son=new Test_son();
 father=son
  楼主这三行代码可以这样写:
       Test_father father = new Test_son();
   第一段之所以成功是因为子类覆盖了父类的 display() 方法
  所以当调用 display() 方法时  调用的是子类中的display() 方法;
  第二段并没有覆盖,当由父类声明的变量再去调用时,找不到那个方法,所以会报错!
  有关重写和重载的具体说明楼主可以去这看看:
   http://blog.csdn.net/ningxuezhu/article/details/7486315