Java,编写一个类,该类有如下方法: public int f(int a,int b){ … //要求该方法返回a和b的最大公约数 } 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。
时间: 2024-02-07 22:01:56 浏览: 61
下面是符合要求的Java代码:
```
public class Calculation {
public int f(int a, int b) {
int m = a % b;
while (m != 0) {
a = b;
b = m;
m = a % b;
}
return b;
}
}
public class CalculationSubclass extends Calculation {
public int f(int a, int b) {
int m = super.f(a, b);
return (a * b) / m;
}
}
public class Main {
public static void main(String[] args) {
Calculation c1 = new Calculation();
CalculationSubclass c2 = new CalculationSubclass();
int a = 6, b = 9;
System.out.println(c1.f(a, b)); // 输出最大公约数:3
System.out.println(c2.f(a, b)); // 输出最小公倍数:18
}
}
```
在上面的代码中,`Calculation`类是父类,包含一个名为`f`的方法,该方法用于计算两个整数的最小公约数。`CalculationSubclass`类是子类,重写了`f`方法,计算两个整数的最小公倍数。在重写的方法中,首先调用父类的`f`方法得到最大公约数,然后用公式`(a*b)/m`计算最小公倍数。在`Main`类的`main`方法中,分别使用父类和子类创建对象,并分别调用方法`f`计算两个正整数的最大公约数和最小公倍数。
阅读全文