黑马黄埔训练营学员探讨多态九题
导语:多态是面向对象编程中的重要概念,对于理解和应用多态,学员们在黑马黄埔训练营上积极参与讨论。本文将分享学员们对于题目“多态九题”的解析和答案,一起来看看吧!
题目描述:
下面给出了一段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方法。
综上所述,题目中的代码片段在调用不同对象的方法时展现了多态的特性。学员们通过仔细观察代码和运行结果,进行了深入的解析和讨论,准确选择了正确的答案。这样的练习有助于加深对多态的理解,并培养学员在实际编程中运用多态的能力。
多态是面向对象编程中重要的概念,它提高了代码的灵活性和可扩展性,有助于实现代码的重用和模块化。通过学习和探讨多态的相关问题,学员们不仅能够理解多态的原理和应用,还能够在实际开发中灵活运用多态的特性,提升代码的质量和可维护性。在黑马黄埔训练营的学习中,多态作为重要的知识点之一,将为学员们的技术成长和职业发展奠定坚实的基础。
|
|