题目的主要信息:

  • 有父类Base,内部定义了x、y属性
  • 有子类Sub,继承自父类Base,子类新增了一个z属性,并且定义了calculate方法,在此方法内计算了父类和子类中x、y、z属性三者的乘积
  • 需要补全子类构造方法的初始化逻辑

具体做法:

我们的任务只是完善子类的构造方法。首先因为父类的成员变量都是private类型的,无法直接访问,因此赋初值只能通过super调用父类的构造方法,然后变量z是子类特有的,因此可以自己给自己赋值。

alt

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();
    }

}

复杂度分析:

  • 时间复杂度:O(1)O(1),直接计算,常数空间
  • 空间复杂度:O(1)O(1),无额外空间