题目的主要信息:

  • 父类Base中定义了计算方法calculate(),该方法用于计算两个数的乘积XYX*Y
  • 在子类Sub中重写该方法,将计算逻辑由乘法改为除法X/YX/Y
  • 当分母为0时输出“Error”

具体做法:

父类的成员变量都是private类型的,我们无法直接访问,因此构造赋值我们用super调用父类的构造方法,访问变量值我们用getX和getY方法。 alt 重写calculate方法,用上述父类的方法获取X和Y的值,先判断Y是否为0,再计算除法。

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();
            Sub sub = new Sub(x, y);
            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;
    }

    public void calculate() {
        System.out.println(getX() * getY());
    }

}

class Sub extends Base {
    public Sub(int x, int y){  //父类的构造方法
        super(x, y);
    }
    
    public void calculate(){
        if(getY() == 0) //除数为0
            System.out.println("Error");
        else
            System.out.println(getX() / getY());
    }
}

复杂度分析:

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