题目的主要信息:
- 父类Base中定义了若干get方法,以及一个sum方法,sum方法是对一组数字的求和
- 在子类 Sub 中重写 getX() 方法,使得 sum 方法返回结果为 x*10+y
具体做法:
Sub是Base的子类,因此继承了父类的成员变量和成员方法,成员方法中,getY()和sum()因为加了final关键字,无法被修改,子类中是直接使用,而getX()函数可以在子类中出些,我们重写为获取x的值扩大10倍。
这样计算的图如下: 
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);
            System.out.println(sub.sum());
        }
    }
}
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 final int getY() { //无法被子类修改
        return y;
    }
    public final int sum() {  //无法被子类修改
        return getX() + getY();
    }
}
class Sub extends Base {
    public Sub(int x, int y) {
        super(x, y);
    }
    public int getX(){ //子类重写getX
        return super.getX() * 10;
    }    
}
复杂度分析:
- 时间复杂度:O(1),直接计算,常数时间
- 空间复杂度:O(1),无额外空间

 京公网安备 11010502036488号
京公网安备 11010502036488号