首页 > 试题广场 >

在下面的Java代码中,哪一行代码是错误的(): publi

[单选题]
在下面的Java代码中,哪一行代码是错误的():
public class Test{
    public static void main(String[] args) {
     Parent b1 = new Child(); 
     Child b2 = new Child(); 
     b1.m1();  //1
     b1.m3();  //2
     b2.m1();  //3
     b2.m2();  //4
 }
}
class Parent{
 public void m1(){}
 public void m2(){}
}
class Child extends Parent{
 public void m1(){}
 public void m3(){}
}
  • 代码1
  • 代码2
  • 代码3
  • 代码4
b1声明的是父类的类型,不能调用子类自己的方法
发表于 2021-09-03 17:24:30 回复(0)
1. 首先分析代码中的类和对象关系: -  Parent b1 = new Child(); :这是合法的,因为 Child 类继承自 Parent 类,一个 Child 对象可以赋值给 Parent 类型的变量,这体现了多态性。 -  Child b2 = new Child(); :这是正常的对象创建和赋值,创建了一个 Child 类的对象并赋值给 Child 类型的变量。 2. 然后分析每行代码的调用: -  b1.m1(); :由于 b1 实际指向的是 Child 类的对象,而 Child 类重写了 m1 方法,根据多态性,会调用 Child 类中的 m1 方法,这是正确的。 -  b1.m3(); : b1 是 Parent 类型,虽然它实际指向 Child 对象,但 Parent 类中没有定义 m3 方法,所以这行代码是错误的。 -  b2.m1(); : b2 是 Child 类型,调用 Child 类中的 m1 方法,这是正确的。 -  b2.m2(); : b2 是 Child 类型, Child 类继承自 Parent 类, Parent 类中有 m2 方法,所以这行代码是正确的。 3. 最后得出结论: - 错误的代码是代码2。 答案是B。
发表于 2024-11-12 10:41:04 回复(1)