编写一个类,该类有如下方法: public int f(int a,int b){ … //要求该方法返回a和b的最大公约数 } 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。
时间: 2024-02-01 15:13:46 浏览: 40
以下是所需的代码:
```
public class MathUtils {
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;
} else {
return gcd(b, a % b);
}
}
}
public class LCMUtils extends MathUtils {
@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) {
int a = 12;
int b = 18;
MathUtils mathUtils = new MathUtils();
int gcd = mathUtils.f(a, b);
System.out.println("GCD of " + a + " and " + b + " is " + gcd);
LCMUtils lcmUtils = new LCMUtils();
int lcm = lcmUtils.f(a, b);
System.out.println("LCM of " + a + " and " + b + " is " + lcm);
}
}
```
首先我们定义了一个名为`MathUtils`的类,它有一个公开的方法`f`,该方法接受两个整数参数`a`和`b`,并返回它们的最大公约数。
接下来,我们定义了一个名为`LCMUtils`的子类,该子类继承了`MathUtils`类。我们重写了`f`方法,在其方法体内,我们首先调用父类的`f`方法以获取`a`和`b`的最大公约数。然后,我们将`a`和`b`的乘积除以最大公约数,以获取最小公倍数。
在主类`Main`中,我们创建了一个`MathUtils`对象和一个`LCMUtils`对象,并分别调用它们的`f`方法来计算`a`和`b`的最大公约数和最小公倍数。最后,我们将这些值打印到控制台上。
阅读全文