A a= new B(); A是父类,B是子类。这就是一个声明了a的A类引用数据类型指向了new一个的B类对象。 他的意义是什么呢,是把B属性和方法赋予A了。还是把A的赋予B了呢?
7 回答
了不了之
TA贡献1条经验 获得超0个赞
这个问题是面向对象程序设计中的多态性,
在父类A与子类B之间, 如果对B并没有特别的要求, 所要用到的B类的方法都是从A类继承重写过来的,
我们就可以把B类的一个实例C向上转型看做A类的一个实例, 你学过继承应该知道, 继承关系可以说是"是一个"的关系,
而面向对象编程在编译的时候是只对方法的参数和返回值进行检查的, 而并不确定执行的确切代码,
被调用的代码只有在运行期才确定, 此时的实例C虽然是父类A的实例, 调用的方法确实他本身B类里的重写方法,
因而,当不同的实例被调用相同的方法, 都会执行他本身重写的方法, 给予不同的响应, 这就是向上转型;
添加回答
举报
0/150
提交
取消