编写一个类,该类有如下方法: public int f(int a,int b) 要求该方法返回a和b的最大公约数 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数,然后将(a*b)/m返回;在应用的程序的主类中分别使同父类和子类创建对象,并分别调用方法f()计算两个数的最大公约数和最小公倍数。
时间: 2024-02-09 09:12:35 浏览: 80
详解c# 类的构造方法
下面是实现题目要求的代码:
```java
// 父类
public class MathUtil {
public int f(int a, int b) {
return gcd(a, b);
}
private int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
}
// 子类
public class LcmUtil extends MathUtil {
@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) {
MathUtil util1 = new MathUtil();
System.out.println(util1.f(24, 36)); // 输出:12
LcmUtil util2 = new LcmUtil();
System.out.println(util2.f(24, 36)); // 输出:72
}
}
```
在上面的代码中,我们定义了一个 `MathUtil` 类,其中有一个 `f()` 方法用于计算两个数的最大公约数。然后我们定义了一个 `LcmUtil` 类作为 `MathUtil` 的子类,重写了 `f()` 方法,用于计算两个数的最小公倍数。在 `LcmUtil` 的 `f()` 方法中,我们首先调用了 `super.f(a, b)` 方法,获取到两个数的最大公约数,然后用 `a * b / gcd` 计算出两个数的最小公倍数。
在应用的程序的主类 `Main` 中,我们分别创建了 `MathUtil` 和 `LcmUtil` 的对象,并调用了它们的 `f()` 方法计算两个数的最大公约数和最小公倍数。
阅读全文