日期:2014-05-20  浏览次数:20832 次

父类引用子类对象与子类引用子类对象有什么区别
能做的行为都一样,有什么意义呢?

------解决方案--------------------
可以实现多态。
这样做的目的是如果一个父类是A,而且要实现一个方法要能接受任意的A的子类,就用到了多态。
详细的可以参看多态的使用。比如工厂模式
------解决方案--------------------
父类引用指向子类对象,这样就是多态。一个方法的调用跟具体实现相关,不同的实现不同的表现。
------解决方案--------------------
父类引用子类对象可以实现多态,但是同时也不能调用子类中特有的方法
子类引用子类对象灵活性不如父类引用子类对象,但是可以调用子类本身特有的方法和改变子类子类特有属性
------解决方案--------------------
探讨
能做的行为都一样,有什么意义呢?

------解决方案--------------------
public class Test{
public static void main(String args[]){
Child child1=new Child();
Parent child2=new Child();
System.out.println(child1.getAge());
System.out.println(child1.getName());
System.out.println(child2.getName());

}
}
class Parent{
public static String getName(){
return "Parent";
}
}
class Child extends Parent{
public static int getAge(){
return 15;
}
}}
你看这个程序,子类引用child1指向子类对象,child1不但可以调用自已的特有方法,还可以调用父类的方法,而父类引用指向子类对象,要调用的方法必须是父类所有的,所以child2不能调用getAge();
而多态的好处是提高了扩展性,比如有个方法
public void show(Parent p){}
假设Parent 有很多子类Child1,Child2,Child3....那么show()方法中所有Parent的子类都可以传入