sorry,基类引用指向派生类对象是什么意思?我的理解:一个类继承另一个类,子类生成一个对象,继承了父类的数据成员和方法,然后强制类型转换成父类。但在内存中子类对象的this指针仍指向本对象,如果子类override从父类继承的方法,该对象调用的方法仍是子类对象的方法,即覆写后的方法,这样可以在运行时刻才绑定方法,使程序员不用担心调用错误的方法,这应该就是著名的多态性。不知道这样理解对不对。
调试欢乐多
“当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中”
子类创建一个对象时难道会产生一个父类对象吗?例如:
Collection a = (Collection)new ArrayList();
a.***();
我的理解a仍然是ArrayList对象,只是在内存中a的前若干数据项和方法符合Collection类的标准。所以可以向上转型。
不知对不对,请指教。
这样可以接收更多的继承基类的子类,所以不同的子类可以接收同样的引用
就象这样
方法 打(XX){ },基中XX代表一基类
子类 人和水都继承XX
调用打(new 人()),打(new 水()),很显然行为是不一样的,但它可以正常的执行
其本质是通过基类的方法接口来调用子类在内存中产生的代码段
子类创建一个对象时难道会产生一个父类对象吗?例如:
Collection a = (Collection)new ArrayList();
a.***();答:
在这里a只是内存中一个受到限制的引用(它只能调用Collection及Collection继承类的方法),
a实际调用的是在内存中产生的ArrayList对象的代码,
所以ArrayList继承Connection中一定要包含Connection中的方法,
否则a会去调用Connection中方法