动手动脑(lesson 6)
一、继承条件下的构造方法调用
运行结果:
二、
答:构造函数的主要作用是初始化环境,子类是继承的父类,也就是说父类中有的子类全都有,而子类中有的父类不一定有,因此子类运行会调用父类构造函数,而父类不可能运行子类构造函数。
三、
四、
答:当没有指明继承类时,会自动继承最大的父类object类,因此输出的也是object类的地址。
五、
六、
七、
八、多态概念知识点
九、
十、
m=d; d=(Dog)m; c=(Cat)m;正确
其他错误.
因为子类对象可以直接赋给基类变量,而积累对象必须通过强制类型转换。两个类型不相关的变量无法互相赋值。
十一、
运行结果:
答:前两个数据没有问题,问题出在后面三个数据,原本我的估测是倒数第三个输出的是100,倒数第二个输出的是201,最后一个输出201。而最后如果输出parent的value是101,而child的value是201。说明输出结果是调用方法的问题。虽然说调用的父类的方法,实际上父类方法已经被子类覆盖,所以下面都是调用的子类的方法,而实际上变量是不参与多态的,只有方法会参与多态。以下是老师给出的解答: