题意整理

  • 在父类中定义了一个乘法运算。
  • 现在有一个子类继承自父类,在子类重写这个计算方法,改为除法运算。

方法一(调用父类构造方法)

1.解题思路

  • 通过父类构造方法初始化x,y的值。
  • 如果y为0,直接输出"Error",并返回。否则输出x除以y的商。

动图展示: alt

2.代码实现

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() {
        //如果除数为0,直接输出“Error”,并返回
        if(super.getY()==0){
            System.out.println("Error");
            return;
        }
        //输出x除以y的商
        System.out.println(super.getX() / super.getY());
    }

}

3.复杂度分析

  • 时间复杂度:构造方法和计算逻辑均只执行一次,所以时间复杂度为O(1)O(1)O(1)
  • 空间复杂度:不需要额外的空间,所以空间复杂度为O(1)O(1)O(1)