题目的主要信息:
- 有父类Base,内部定义了x、y属性
- 有子类Sub,继承自父类Base,子类新增了一个z属性,并且定义了calculate方法,在此方法内计算了父类和子类中x、y、z属性三者的乘积
- 需要补全子类构造方法的初始化逻辑
具体做法:
我们的任务只是完善子类的构造方法。首先因为父类的成员变量都是private类型的,无法直接访问,因此赋初值只能通过super调用父类的构造方法,然后变量z是子类特有的,因此可以自己给自己赋值。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int x = scanner.nextInt();
int y = scanner.nextInt();
int z = scanner.nextInt();
Sub sub = new Sub(x, y, z);
System.out.println(sub.calculate());
}
}
}
class Base {
private int x;
private int y;
public Base(int x, int y) { //父类构造方法
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
class Sub extends Base {
private int z;
public Sub(int x, int y, int z) { //子类构造方法
super(x, y); //调用父类构造方法
this.z = z;
}
public int getZ() {
return z;
}
public int calculate() { //子类计算三者乘积
return super.getX() * super.getY() * this.getZ();
}
}
复杂度分析:
- 时间复杂度:,直接计算,常数空间
- 空间复杂度:,无额外空间