以下程序运行结果正确的是:【 】 class Base { public void method() { System.out.println("不带参Base"); } } public class Sub extends Base { public void method() { System.out.println("不带参Sub"); } public int method(int a) { System.out.println("带参Sub"); return 0; } public static void main(String[] args) { Sub test = new Sub(); test.method(); test.method(0); } }
时间: 2024-04-02 07:31:24 浏览: 59
以下程序运行结果是正确的:
输出结果为:
不带参Sub
带参Sub
解析:
Sub类继承了Base类,并重写了method方法。在Sub类中,定义了两个method方法,一个是不带参数的方法,一个是带参数的方法。在main方法中,创建了Sub类的对象test,并分别调用了不带参数和带参数的method方法。由于Sub类重写了method方法,因此调用不带参数的method方法时,会调用Sub类中的方法,输出"不带参Sub";调用带参数的method方法时,会调用Sub类中的带参数的方法,输出"带参Sub"。因此,程序运行结果是正确的。
相关问题
阅读程序,写出运行结果(转型问题) public class d3 { public static void main(String[] args) { // TODO Auto-generated method stub Base1 a = new Base1(); Sub1 b = new Sub1(); Base1 c = new Sub1(); Base1 d = new Sub2(); System.out.println(a.getN()); System.out.println(b.getN()); System.out.println( c.getN()); System.out.println( d.getN()); } } class Base1 { int getN() { return 2; } } class Sub1 extends Base1 { int getN() { return 3; } } class Sub2 extends Base1 { int getN() { return 4; } }
运行结果为:
```
2
3
3
4
```
解释如下:
- `a`是`Base1`类型的对象,调用`getN()`方法返回`2`。
- `b`是`Sub1`类型的对象,调用`getN()`方法返回`3`。
- `c`是`Sub1`类型的对象,但是声明为`Base1`类型,调用`getN()`方法时会调用`Sub1`中重写的`getN()`方法,返回`3`。
- `d`是`Sub2`类型的对象,但是声明为`Base1`类型,调用`getN()`方法时会调用`Sub2`中重写的`getN()`方法,返回`4`。
这里涉及到了对象的转型问题,即`Sub1`和`Sub2`类型的对象可以被声明为`Base1`类型的变量。在调用方法时,会根据对象的实际类型来确定调用哪个方法。
public class d3 { public static void main(String[] args) { // TODO Auto-generated method stub Base1 a = new Base1(); Sub1 b = new Sub1(); Base1 c = new Sub1(); Base1 d = new Sub2(); System.out.println(a.getN()); System.out.println(b.getN()); System.out.println( c.getN()); System.out.println( d.getN()); } } class Base1 { int getN() { return 2; } } class Sub1 extends Base1 { int getN() { return 3; } } class Sub2 extends Base1 { int getN() { return 4; } }
这段Java代码中,输出的结果是:
```
2
3
3
4
```
解释如下:
在`main`方法中,分别创建了`Base1`、`Sub1`和`Sub2`三个对象,并将它们赋值给`a`、`b`、`c`和`d`四个变量。
对于`a`对象,它是`Base1`类型的,它的`getN()`方法返回值为2,因此输出2。
对于`b`对象,它是`Sub1`类型的,它的`getN()`方法被重写了,返回值为3,因此输出3。
对于`c`对象,它是`Sub1`类型的,但是被赋值给了`Base1`类型的变量,因此调用的是`Base1`类中的`getN()`方法,返回值为2,因此输出2。
对于`d`对象,它是`Sub2`类型的,但是也被赋值给了`Base1`类型的变量,同样调用的是`Base1`类中的`getN()`方法,返回值为4,因此输出4。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)