sorry,基类引用指向派生类对象是什么意思?我的理解:一个类继承另一个类,子类生成一个对象,继承了父类的数据成员和方法,然后强制类型转换成父类。但在内存中子类对象的this指针仍指向本对象,如果子类override从父类继承的方法,该对象调用的方法仍是子类对象的方法,即覆写后的方法,这样可以在运行时刻才绑定方法,使程序员不用担心调用错误的方法,这应该就是著名的多态性。不知道这样理解对不对。

解决方案 »

  1.   

    请高手指点:
    “当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中”
    子类创建一个对象时难道会产生一个父类对象吗?例如:
    Collection a = (Collection)new ArrayList();
    a.***();
    我的理解a仍然是ArrayList对象,只是在内存中a的前若干数据项和方法符合Collection类的标准。所以可以向上转型。
    不知对不对,请指教。
      

  2.   

    很简单,向上转型会缩小子类对外方法,
    这样可以接收更多的继承基类的子类,所以不同的子类可以接收同样的引用
    就象这样
      方法  打(XX){  },基中XX代表一基类
      子类 人和水都继承XX
        调用打(new 人()),打(new 水()),很显然行为是不一样的,但它可以正常的执行
     其本质是通过基类的方法接口来调用子类在内存中产生的代码段
      

  3.   

    “当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中”
    子类创建一个对象时难道会产生一个父类对象吗?例如:
    Collection a = (Collection)new ArrayList();
    a.***();答:
    在这里a只是内存中一个受到限制的引用(它只能调用Collection及Collection继承类的方法),
    a实际调用的是在内存中产生的ArrayList对象的代码,
    所以ArrayList继承Connection中一定要包含Connection中的方法,
    否则a会去调用Connection中方法