publicclassBase{ publicstaticvoidmain(String[]args){ Derived=newDerive(); } privateinti; publicBase(inti){ this.i=i; } } classDeriveextendsBase{ privateintj; }
时间: 2024-03-01 09:56:14 浏览: 99
这段代码存在两个问题:
1. 在 `Main` 方法中,没有指定 `Derived` 对象的类型;
2. `Derived` 类没有定义构造方法。
下面是修改后的代码:
```
public class Base {
private int i;
public Base(int i) {
this.i = i;
}
public static void main(String[] args) {
Derived d = new Derived(10, 20);
}
}
class Derived extends Base {
private int j;
public Derived(int i, int j) {
super(i);
this.j = j;
}
}
```
在修改后的代码中,我们定义了 `Derived` 类的构造方法,用来初始化 `j` 属性。同时,在 `Main` 方法中,我们将 `Derived` 对象的类型指定为 `Derived`。此外,在 `Derived` 的构造方法中,我们调用了 `super(i)`,来初始化 `Base` 类的 `i` 属性。
相关问题
publicclassTest{ publicstaticvoidmain(String[]args) { Baseb=newDerive(); System.out.println(b); print(b); } publicstaticvoidprint(Baseb){ System.out.println(b); } } classBase{ publicBase(){ System.out.println("Base(inti)"); } @Override publicStringtoString(){ return"Base"; } } classDeriveextendsBase{ publicDerive(){ System.out.println("Derive(inti,intj)"); } @Override publicStringtoString(){ return"Derive"; } }解析
这段代码的输出结果是:
```
Derive(inti,intj)
Derive
```
在这段代码中,我们定义了一个Base类和一个Derive类,Derive类继承自Base类。在main方法中,我们创建了一个Derive对象b,并将它向上转型为Base类型。然后我们调用了print方法,并传递了b作为参数。
在print方法中,我们输出了b的值。由于b是一个Base类型的引用,但它实际上指向的是一个Derive对象,所以调用toString方法时会调用Derive类的toString方法,输出"Derive"。然后我们又调用了println方法,输出了b的值,这里的b是一个Base类型的引用,所以输出"Derive"。
在Derive类中,我们重写了toString方法,返回了"Derive"。在Base类中,我们也重写了toString方法,返回了"Base"。由于b指向的是一个Derive对象,所以调用toString方法时会调用Derive类的toString方法。
publicclassTest { privatestaticinti=10; privatestaticintj=20; publicstaticvoidmain(String[]args) { inti=2; intk=10; { intj=6; System.out.println("i+j="+i+j); } k=i+j; System.out.println("k="+k); System.out.println("j="+j); } }
这段程序的输出结果是:
```
i+j=26
k=26
j=6
```
首先,在main方法中,我们定义了三个int类型的变量i、j和k,并给i赋值为2。接着,我们进入一个代码块中,定义了一个int类型的变量j,并给它赋值为6。在代码块中,我们输出了i+j的值,因为i和j都是int类型的变量,所以这里的加法运算会先计算i+j,得到结果26,然后再将这个结果转换成字符串和后面的j拼接起来,输出“i+j=26”。
接着,我们计算了k的值,即将i和j相加,得到结果26,并将它赋值给k。因此,接下来输出“k=26”。
最后,我们输出了变量j的值,因为在代码块中定义的j变量只在代码块内部有效,所以在代码块外部输出j的值,得到的是代码块外部定义的j变量的值,即6。因此,最后输出“j=6”。
阅读全文