class A{ public int getNumber(int a){ return a+2020; } } class B extends A{ public int getNumber(int a){ return a+2020; } public static void main(String args[]){ A a=new B(); System.out.println(a.getNumber(0));//1 } } 请问标注为//1的语句中,a.getNumber(0)调用的是哪个类的方法?请直接填写类名
时间: 2024-01-22 16:03:45 浏览: 97
在该代码中,`a.getNumber(0)` 调用的是类 `B` 中的 `getNumber` 方法,而不是类 `A` 中的方法。这是因为在 `main` 方法中,`a` 变量被声明为 `A` 类型,但实际上它引用了一个 `B` 类型的对象,因为在创建 `a` 对象时使用了 `new B()`。因为 `B` 类继承了 `A` 类,并且 `B` 类重写了 `A` 类的 `getNumber` 方法,所以在调用 `a.getNumber(0)` 时,实际上调用的是 `B` 类中的 `getNumber` 方法。
相关问题
class A{ public int getNumber(int a){ return a+1; } } class B extends A{ public int getNumber(int a){ return a+100; } public static void main(String args[]){ A a = new A(); System.out.println(a.getNumber(10)); a = new B(); System.out.println(a.getNumber(10)); } }
这段代码仍然存在语法错误,第二个System.out.println语句中的代码仍然缺少右括号,应该为"a = new B();"。在运行程序时,第一个输出结果为11,因为a是A类的实例,调用的是A类中的getNumber方法。第二个输出结果为110,因为a被重新赋值为B类的实例,调用的是B类中的getNumber方法,该方法返回的是参数a加上100的结果。这体现了Java中的多态性,父类对象可以引用子类对象,但是调用的方法取决于实际的对象类型。
6. 当视图编译并运行下面程序时会出现什么结果()。 class A{ public int getNumber (int a) { return a + 1; } } class B extends A{ public int getNumber (int a, char c){ Return a + 2; } public static void main(String[] args) { B b = new B(); System.out.println(b.getNumber(0)); } }
编译时会报错,因为子类 B 中的 getNumber 方法与父类 A 中的 getNumber 方法的参数列表不同,重载方法必须具有相同的方法名和不同的参数列表。正确的代码如下:
```
class A {
public int getNumber(int a) {
return a + 1;
}
}
class B extends A {
public int getNumber(int a, char c) {
return a + 2;
}
public static void main(String[] args) {
B b = new B();
System.out.println(b.getNumber(0, 'a')); // 输出 2
}
}
```
阅读全文