动手动脑(lesson 6)

一、继承条件下的构造方法调用

运行结果:

 二、

答:构造函数的主要作用是初始化环境,子类是继承的父类,也就是说父类中有的子类全都有,而子类中有的父类不一定有,因此子类运行会调用父类构造函数,而父类不可能运行子类构造函数。

三、

 四、

答:当没有指明继承类时,会自动继承最大的父类object类,因此输出的也是object类的地址。

 五、

六、

七、

 

 八、多态概念知识点

 

九、

 十、

 m=d; d=(Dog)m; c=(Cat)m;正确

其他错误.

因为子类对象可以直接赋给基类变量,而积累对象必须通过强制类型转换。两个类型不相关的变量无法互相赋值。

十一、

运行结果:

答:前两个数据没有问题,问题出在后面三个数据,原本我的估测是倒数第三个输出的是100,倒数第二个输出的是201,最后一个输出201。而最后如果输出parent的value是101,而child的value是201。说明输出结果是调用方法的问题。虽然说调用的父类的方法,实际上父类方法已经被子类覆盖,所以下面都是调用的子类的方法,而实际上变量是不参与多态的,只有方法会参与多态。以下是老师给出的解答:

原文地址:https://www.cnblogs.com/cairsha/p/7806567.html