Java问答_5

1.实验:利用IDE的debug功能给例6.4和例6.5的new语句设置断点,使用单步调试(step into/step over)跟踪子类对象实例化(初始化)的执行顺序,并总结该过程。

2.如何实现两个对象之间互发消息,请举例说明。

Java问答_5

 Java问答_5

 Java问答_5

 

3. 谈谈组合与继承的区别以及两者的使用场景(即什么时候宜用组合 ?什么时候宜用继承?)。

继承中子类可以访问和调用父类的部分属性和方法。组合是通过对现有对象进行拼装即组合产生新的具有更复杂的功能。

当只需要某个类的方法时使用组合。当两个类之间是is-a的关系时使用继承。

4. Java中的运行时多态的含义是什么?有什么作用?请举例说明。

运行时多态指程序运行时系统根据实例的类型选择调用某个方法。当子类重写了父类方法,使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。

运行时多态可以在运行时解决很多事,提供更大的灵活性。

5. 使用接口改写例6.8中的程序。

Java问答_5

 Java问答_5

 Java问答_5

 

 6. 自定义一个类,覆写equals方法,以满足自身业务需求。

7. 举例说明运算符instanceof的使用场景。

public interface A {
}
public class B implements A{
}
public class C extends B{
}
public class InstanceofTest3 {
 
    public static void main(String[] args) {
        A a = null;
        B b = null;
        boolean result;
        result = a instanceof A;
        System.out.println(result); // 结果:false null用instanceof跟任何类型比较时都是false
        result = b instanceof B;
        System.out.println(result); // 结果:false null用instanceof跟任何类型比较时都是false
        a = new B();
        b = new B();
        result = a instanceof A;
        System.out.println(result); // 结果:true a是接口A的实例对象引用指向子类类B,类B实现了接口A,所以属于同一个继承树分支
        result = a instanceof B;
        System.out.println(result); // 结果:true a是接口A的实例对象引用指向子类类B,类B实现了接口A,所以属于同一个继承树分支
        result = b instanceof A;
        System.out.println(result);// 结果:true b是类B的实例对象,类B实现了接口A,所以属于同一个继承树分支
        result = b instanceof B;
        System.out.println(result);// 结果:true b是类B的实例对象,类B实现了接口A,所以属于同一个继承树分支
        B b2 = new C();
        result = b2 instanceof A;
        System.out.println(result); // 结果:true b2是父类B引用指向子类C,类B实现了接口A,所以属于同一个继承树分支
        result = b2 instanceof B;
        System.out.println(result); // 结果:true b2是父类B引用指向子类C,所以属于同一个继承树分支
        result = b2 instanceof C;
        System.out.println(result); // 结果:true b2是父类B引用指向子类C,所以属于同一个继承树分支
    }
}

 8. 谈谈抽象类与接口的异同以及两者的使用场景。

相同点:两者都具有抽象方法,都不能实例化,都可以有自己的声明,能引用子类或实现类对象。

不同点:抽象类可以有域变量;接口只能是静态常量。

              抽象类可以有具体方法,具体方法可以调用抽象方法;接口有方法则只能是抽象方法。

              抽象类必须有子类继承;接口必须有实现类实现。

              一个类只能继承一个抽象类,但可以同时实现多个接口。

抽象类用于is-a关系中,接口用于can-do关系中。

上一篇:instanceof用法详解以及注意事项


下一篇:instanceof、类型转换及static关键字详解