java编写一个类,该类有如下方法:public int f (int a, int b){……//要求该方法返回a和b的最大公约数},再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。要求在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数
时间: 2024-02-10 14:10:27 浏览: 18
下面是 Java 代码实现:
```
public class MathUtils {
public int f(int a, int b) {
int min = Math.min(a, b);
for (int i = min; i >= 1; i--) {
if (a % i == 0 && b % i == 0) {
return i;
}
}
return 1;
}
}
public class LCMUtils extends MathUtils {
@Override
public int f(int a, int b) {
int gcd = super.f(a, b);
return a * b / gcd;
}
}
public class Main {
public static void main(String[] args) {
MathUtils mathUtils = new MathUtils();
int gcd = mathUtils.f(18, 24);
System.out.println("18 和 24 的最大公约数是 " + gcd);
LCMUtils lcmUtils = new LCMUtils();
int lcm = lcmUtils.f(18, 24);
System.out.println("18 和 24 的最小公倍数是 " + lcm);
}
}
```
输出结果为:
```
18 和 24 的最大公约数是 6
18 和 24 的最小公倍数是 72
```