class Father { int a; public Father(int a) { this.a=a; } public void print() { System.out.println(a); } } class Child extends Father { int a; public Child(int a) {
时间: 2024-04-27 09:20:39 浏览: 193
super(a);
this.a = a * 2;
}
public void print() {
System.out.println(a);
super.print();
}
}
以上是一个父类Father和一个子类Child的代码。当执行下面的代码时,会输出什么?
Father f = new Child(10);
f.print();
请问输出的内容是什么?
相关问题
class Father { int a; public Father(int a) { this.a=a; } public void print() { System.out.println(a); } } class Child extends Father { int a; public Child(int a) { super(a); // 将形参a的数值赋给父类成员变量a this.a=a*10; // 将父类成员变量a的值*10赋给本类的成员变量a } public void print() { System.out.println( a ); // 输出父类成员变量a的值 System.out.println( this.a ); // 输出子类成员变量a的值 } } public class Main { public static void main(String[] args) { Child child=new Child(10); child.print(); } }
这段代码定义了一个`Father`类和一个`Child`类,`Child`类继承了`Father`类。`Father`类有一个`int`类型的成员变量`a`和一个有参构造方法,`Child`类也有一个`int`类型的成员变量`a`,并且有一个有参构造方法。在`Child`类的有参构造方法中,使用`super`关键字调用父类的有参构造方法,并将传入的参数赋值给父类的成员变量`a`,同时将父类的成员变量`a`的值乘以10赋值给子类的成员变量`a`。`Child`类还重写了父类的`print`方法,在方法中同时输出父类和子类的成员变量`a`的值。最后,在`Main`类的`main`方法中创建一个`Child`对象,传入参数为10,然后调用`print`方法输出结果。
运行上述代码,输出结果为:
```
10
100
```
这是因为在`Child`类的`print`方法中,先输出父类的成员变量`a`的值,即`10`,然后输出子类的成员变量`a`的值,即`100`。
class Father { int a =100; public void print() { System.out.println(a); } } class Child1 extends Father { int a =200; public void print() { System.out.println(a); } } class Child2 extends Father { int a =300; public void print() { System.out.println(a); } } public class Main { public static void main(String[] a) { Father obj1; obj1=new Child1(); System.out.println(obj1.a); obj1.print(); obj1=new Child2(); System.out.println(obj1.a); obj1.print(); } }
执行代码的输出结果为:
```
200
200
300
300
```
首先定义了一个 `Father` 类型的引用变量 `obj1`,然后将其赋值为 `Child1` 类型的对象。因为 `Child1` 类是 `Father` 类的子类,所以可以将 `Child1` 类型的对象赋值给 `Father` 类型的引用变量。此时,`obj1` 引用的对象是 `Child1` 类型的,所以访问 `obj1.a` 时,会输出 `200`,而调用 `obj1.print()` 方法时,会调用 `Child1` 类中重写的 `print()` 方法,输出的结果也是 `200`。
接着,将 `obj1` 赋值为 `Child2` 类型的对象。此时,`obj1` 引用的对象变成了 `Child2` 类型的,所以访问 `obj1.a` 时,会输出 `300`,而调用 `obj1.print()` 方法时,会调用 `Child2` 类中重写的 `print()` 方法,输出的结果也是 `300`。
因此,最终输出的结果为 `200 200 300 300`。
阅读全文