当前位置: 代码迷 >> J2SE >> 【赐教】父类引用指向子类实例的好处?解决办法
  详细解决方案

【赐教】父类引用指向子类实例的好处?解决办法

热度:298   发布时间:2016-04-24 01:46:07.0
【赐教】父类引用指向子类实例的好处?
高手指教一下区别:在这儿我就没写下面的类了,只写了测试类的代码:问题:父类引用指向子类对象 和 直接实例化对象结果还不是一样的,为什么要搞得那么复杂咧?在这里体现不出任何子类指向父类对象的好处啊(多太的一种),那么在什么情况下才能更好的看出父类引用指向子类的好处咧?【不知道的不要瞎扯。我看到晚上的好些类就是瞎扯的,根本没体现出它的好处,求高手指教】 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         *          */    }}
  相关解决方案