黑马程序员技术交流社区

标题: 黑马黄埔训练营学员探讨多态九题 [打印本页]

作者: 黄埔小灰灰    时间: 2023-7-3 18:33
标题: 黑马黄埔训练营学员探讨多态九题
黑马黄埔训练营学员探讨多态九题


导语:多态是面向对象编程中的重要概念,对于理解和应用多态,学员们在黑马黄埔训练营上积极参与讨论。本文将分享学员们对于题目“多态九题”的解析和答案,一起来看看吧!


题目描述:
下面给出了一段Java程序,通过调用不同对象的方法并观察输出结果,考察多态的应用。请根据程序的运行结果选择正确的答案。


class A {
    public String show(D obj) {
        return "A and D";
    }
    public String show(A obj) {
        return "A and A";
    }
}


class B extends A {
    public String show(B obj) {
        return "B and B";
    }
    public String show(A obj) {
        return "B and A";
    }
}


class C extends B {}
class D extends B {}


public class PolymorphismTest {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new B();
        B b = new B();
        C c = new C();
        D d = new D();


        System.out.println(a1.show(b));   // ①
        System.out.println(a1.show(c));   // ②
        System.out.println(a1.show(d));   // ③
        System.out.println(a2.show(b));   // ④
        System.out.println(a2.show(c));   // ⑤
        System.out.println(a2.show(d));   // ⑥
        System.out.println(b.show(b));    // ⑦
        System.out.println(b.show(c));    // ⑧
        System.out.println(b.show(d));    // ⑨
    }
}




解析与答案:
根据程序的运行结果,选择正确的答案。


① 输出:"A and A"
解析:a1是A类的实例,传入的参数是B类型的对象b,由于A类中有一个接受A类型参数的方法,因此调用了A类中的show方法。


② 输出:"A and A"
解析:a1是A类的实例,传入的参数是C类型的对象c,由于A类中有一个接受A类型参数的方法,因此调用了A类中的show方法。


③ 输出:"A and D"
解析:a1是A类的实例,传入的参数是D类型的对象d,由于A类中有一个接受D类型参数的方法,因此调用了A类中的show方法。


④ 输出:"B and A"
解析:a2是B类的实例,传入的参数是B类型的对象b,由于B类中有一个接受A类型参数的方法,且B类覆盖了A类中的该方法,因此调用了B类中的show方法。


⑤ 输出:"B and A"
解析:a2是B类的实例,传入的参数是C类型的对象c,由于B类继承自A类,且B类覆盖了A类中的接受A类型参数的方法,因此调用了B类中的show方法。


⑥ 输出:"A and D"
解析:a2是B类的实例,传入的参数是D类型的对象d,由于A类中有一个接受D类型参数的方法,因此调用了A类中的show方法。


⑦ 输出:"B and B"
解析:b是B类的实例,传入的参数是B类型的对象b,由于B类中有一个接受B类型参数的方法,因此调用了B类中的show方法。


⑧ 输出:"B and B"
解析:b是B类的实例,传入的参数是C类型的对象c,由于B类继承自A类,并且B类覆盖了A类中的接受A类型参数的方法,因此调用了B类中的show方法。


⑨ 输出:"A and D"
解析:b是B类的实例,传入的参数是D类型的对象d,由于A类中有一个接受D类型参数的方法,因此调用了A类中的show方法。


综上所述,题目中的代码片段在调用不同对象的方法时展现了多态的特性。学员们通过仔细观察代码和运行结果,进行了深入的解析和讨论,准确选择了正确的答案。这样的练习有助于加深对多态的理解,并培养学员在实际编程中运用多态的能力。


多态是面向对象编程中重要的概念,它提高了代码的灵活性和可扩展性,有助于实现代码的重用和模块化。通过学习和探讨多态的相关问题,学员们不仅能够理解多态的原理和应用,还能够在实际开发中灵活运用多态的特性,提升代码的质量和可维护性。在黑马黄埔训练营的学习中,多态作为重要的知识点之一,将为学员们的技术成长和职业发展奠定坚实的基础。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2