2、指出以下程序的错误,并修改之。public class Base{ public static void main(String[] args){ Derive d = new Derive(); } private int i; public Base(int i) { this.i = i; } } class Derive extends Base{ private int j; }
时间: 2024-01-28 22:05:42 浏览: 42
这个程序有两个错误:
1. Base类中没有默认的构造函数,因为已经定义了一个有参构造函数,所以需要显式地定义一个无参构造函数。
2. 在Derive类中没有调用父类的构造函数,因为Base类中只有一个有参构造函数,所以需要在Derive类的构造函数中调用父类的构造函数,并传递一个int参数。
下面是修改后的程序:
```
public class Base {
private int i;
public Base() {
// 无参构造函数
}
public Base(int i) {
this.i = i;
}
public static void main(String[] args) {
Derive d = new Derive(10);
}
}
class Derive extends Base {
private int j;
public Derive(int j) {
super(j);
this.j = j;
}
}
```
修改后的程序中,Base类有一个无参构造函数,Derive类的构造函数中调用了父类的构造函数,并传递了一个int参数。这样程序就能够正确地编译和执行了。
相关问题
import java.util.Scanner; package base; public class scaner { public static void main(String[] args) { } } 改错
在代码的开头处移除多余的import语句,将package语句放在import语句后面,同时将类名从"scaner"改为"Scanner",修正后的代码如下:
```java
package base;
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
// 在这里编写你的代码
}
}
```
请注意,你需要在`main`方法中编写你的代码,这只是一个修正后的代码框架。
Java:以下程序输出的结果是 public class Main{ public static void main(String[] args) { byte b1 = 3; byte b2 = 126; byte b3 = b1 + b2; System.out.println(b3); } }
这个程序会报编译错误,因为 `byte b1 = 3;` 和 `byte b2 = 126;` 都是 byte 类型的变量,而在 `byte b3 = b1 + b2;` 这一行代码中,b1 和 b2 会被自动转换为 int 类型进行计算,计算结果也是 int 类型,而不能直接赋值给 byte 类型的变量 b3。因此需要将计算结果进行强制类型转换,正确的代码应该是:
```
public class Main{
public static void main(String[] args) {
byte b1 = 3;
byte b2 = 126;
byte b3 = (byte)(b1 + b2);
System.out.println(b3);
}
}
```
输出结果为 -127。