1.实验:利用IDE的debug功能给代码中的new语句设置断点,使用单步调试(step into/step over)跟踪子类对象实例化(初始化)的执行顺序,并总结该过程。 为对象分配内存空间,对成员变量进行默 认的初始化绑定构造方法,将new中的参 数传递给构造方法的形式参数。调用this 或super语句(二者必居其一,不能同时存 在),执行流程如图所示进行实例变量的 显式初始化操作, 如:public class A{ int value=4; //显式初始化 B b = new B(); //显式初始化,注:B为另一个类}
2.如何实现两个对象之间互发消息,请举例说明。 引用必须真实引用了特定的对象,否则会 在运行时抛出NullPointerException异 常。被访问对象必须定义了相应的属性或 方法,否则编译不会通过。被访问的属性 或方法必须具有可访问的权限。
3.谈谈组合与继承的区别以及两者的使用场景。 组合:在新类里面创建原有类的对象,重 复利用已有类的功能。 继承:可以使用现有类的功能,并且在无 需重复编写原有类的情况下对原有类进行 功能上的扩展。 使用场景:除非两个类之间是“is-a”的关 系,否则不要轻易的使用继承,不要单纯 的为了实现代码的重用而使用继承,因为 过多的使用继承会破坏代码的可维护性, 当父类被修改时,会影响到所有继承自它 的子类,从而增加程序的维护难度和成 本。不要仅仅为了实现多态而使用继承, 如果类之间没有“is-a”的关系,可以通过实 现接口与组合的方式来达到相同的目的。 设计模式中的策略模式可以很好的说明这 一点,采用接口与组合的方式比采用继承 的方式具有更好的可扩展性。在Java语言 中,能使用组合就尽量不要使用继承。
4.Java中的运行时多态的含义是什么?有什么作用?请举例说明。 含义:程序运行时,Java从实例所属的类 (new 类)开始寻找匹配的方法执行,如 果当前类中没有匹配的方法,则沿着继承 关系逐层向上,依次在父类或各祖先类中 寻找匹配方法,直到Object类。作用:动 态绑定,使用父类引用指向子类对象,再 调用某一父类中的方法时,不同子类会表 现出不同结果,扩展性极好
5.简述运算符instanceof的使用场景。 用法:判断对象是否为特定类的实例,还 可以将这个对象强制转换成这个类的类型