【赐教】父类引用指向子类实例的好处?
高手指教一下区别:在这儿我就没写下面的类了,只写了测试类的代码:问题:父类引用指向子类对象 和 直接实例化对象结果还不是一样的,为什么要搞得那么复杂咧?在这里体现不出任何子类指向父类对象的好处啊(多太的一种),那么在什么情况下才能更好的看出父类引用指向子类的好处咧?【不知道的不要瞎扯。我看到晚上的好些类就是瞎扯的,根本没体现出它的好处,求高手指教】 public class GraphicsTest {//测试程序类
public static void main(String[] args) {
Graphics gc= new Graphics();// Graphics为父类
gc.calArea();
gc = new Rect();// Rect为子类(父类引用指向子类对象)
gc.calArea();
gc = new Circle();//Rect为子类(父类引用指向子类对象)
gc.calArea();
Graphics gc1= new Graphics();
gc1.calArea();
Rect r=new Rect ();//实例化对象
r.calArea();//调用方法
Circle c=new Circle();
c.calArea();
}
}
------解决方案--------------------
楼主可以看一下多态的应用,以及动态绑定。
假设有一个Animal的父类,Dog、Cat子类
如果你在代码中,事先申请
private Animal an;
这样的好处是什么列? An的实际类型在运行的时候才能具体确定,他可以是Dog Cat 或者Animal。因为你可以写:
an = new Animal();
也可以写:
an = new Dog();
或
an = new Cat(();
如果你一开始就申明了一个是Dog an; 那么你的an就只能是Dog 那么代码就不够灵活,以及的扩展的时候就不方便扩展。
当然,如果你确定an 只可能是DOG 不会为其它类型的时候,两种写法都是可以的。
------解决方案--------------------
举两个比较简单的例子。
Java code
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map map = new HashMap();
/*
* map
* do some thing
*
*/
}
}