用Java写一个类,该类有一个方法 public int f ( int a , int b ),该方法返回 a 和 b 的最大公约数;然后编写一个该类的子类,要求子类重写方法 f ,而且重写的方法将返回 a 和 b 的最小公倍数。要求在重写的方法的方法体中首先调用被隐藏的方法返回 a 和 b 的最大公约数 m ,然后将乘积( a * b )/ m 返回。在应用程序的主类中创建一个父类的对象,例如 a ,该对象 a 调用方法 f 返回最大公约数,然后 a 作为子类对象的上转型对象调用方法 f 返回最小公倍数。
时间: 2024-02-23 21:00:15 浏览: 57
好的,下面是代码实现:
```
public class MathUtil {
public int f(int a, int b) {
int m = gcd(a, b);
return m;
}
private int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
}
public class LcmMathUtil extends MathUtil {
@Override
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) {
MathUtil a = new MathUtil();
System.out.println("最大公约数: " + a.f(48, 60));
a = new LcmMathUtil();
System.out.println("最小公倍数: " + a.f(48, 60));
}
}
```
运行结果:
```
最大公约数: 12
最小公倍数: 240
```
在子类的 f 方法中,我们首先调用父类的 f 方法,获取 a 和 b 的最大公约数 m,然后根据公式 `(a * b) / m` 计算出最小公倍数。在应用程序的主类中,我们首先创建一个父类的对象 a,调用父类的 f 方法返回最大公约数,然后将 a 强制转换为子类对象调用子类的 f 方法返回最小公倍数。
阅读全文