用Java(2)写一个类,该类有一个方法 public int f(int a,int b),该方法返回a和b的最大公约数;然后编写一个该类的子类,要求子类重写方法(,而且重写的方法将返回a和b的最小公倍数。要求在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。在应用程序的主类中创建一个父类的对象,例如a,该对象a调用方法f返回最大公约数,然后a作为子类对象的上转型对象调用方法「返回最小公倍数。
时间: 2024-02-16 14:00:01 浏览: 56
下面是Java代码实现:
```java
public class GCD {
public int f(int a, int b) {
int r;
while (b != 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
public static void main(String[] args) {
GCD a = new GCD();
int gcd = a.f(12, 18);
System.out.println("最大公约数:" + gcd);
GCDSubclass b = new GCDSubclass();
int lcm = b.f(12, 18);
System.out.println("最小公倍数:" + lcm);
}
}
class GCDSubclass extends GCD {
@Override
public int f(int a, int b) {
int gcd = super.f(a, b);
return (a * b) / gcd;
}
}
```
输出结果为:
```
最大公约数:6
最小公倍数:36
```
在这个例子中,我们创建了一个名为 `GCD` 的类,其中包含一个名为 `f` 的方法,该方法返回两个整数的最大公约数。我们还创建了一个名为 `GCDSubclass` 的子类,该子类覆盖了 `f` 方法以返回两个整数的最小公倍数。在 `GCDSubclass` 的 `f` 方法中,我们首先调用父类的 `f` 方法来获得最大公约数,然后使用 `(a * b) / gcd` 公式来计算最小公倍数。
在主类中,我们首先创建一个 `GCD` 对象 `a`,使用 `a.f(12, 18)` 调用 `f` 方法并打印结果。然后,我们创建一个 `GCDSubclass` 对象 `b`,将其作为 `GCD` 类型的上转型对象,并使用 `b.f(12, 18)` 调用 `f` 方法并打印结果。由于 `GCDSubclass` 是 `GCD` 的子类,因此我们可以将 `GCDSubclass` 对象赋值给 `GCD` 类型的变量。
阅读全文