编写一个类,该类有一个方法public int f(int a,int b), 该方法返回a和b的最大公约数。然后再编写一个该类的子类, 要求子类重写方法f,而且重写的方法将返回a和b的最小公倍数。 要求在重写的方法体中首先调用被隐藏的方法返回a和b的最大公约数m, 然后将乘积(a*b)/m返回。要求在应用程序的主类中分别使用父类和子类创建对象, 并分别调用方法f计算两个正整数的最大公约数和最小公倍数。
时间: 2023-07-15 15:14:57 浏览: 54
可以参考以下代码实现:
```java
public class GCDandLCM {
public int f(int a, int b) {
if (b == 0) {
return a;
} else {
return f(b, a % b);
}
}
public static void main(String[] args) {
GCDandLCM gcd = new GCDandLCM();
int a = 24;
int b = 36;
int gcdResult = gcd.f(a, b);
System.out.println("a和b的最大公约数为:" + gcdResult);
LCM lcm = new LCM();
int lcmResult = lcm.f(a, b);
System.out.println("a和b的最小公倍数为:" + lcmResult);
}
}
class LCM extends GCDandLCM {
@Override
public int f(int a, int b) {
int gcd = super.f(a, b);
return (a * b) / gcd;
}
}
```
其中,GCDandLCM类实现了求最大公约数的方法f,使用递归算法实现。LCM类继承了GCDandLCM类,并重写了方法f来实现求最小公倍数的功能。在重写的方法体中,首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。
在应用程序的主类中,首先使用GCDandLCM类创建对象,调用方法f计算a和b的最大公约数,然后使用LCM类创建对象,调用方法f计算a和b的最小公倍数。输出结果如下:
```
a和b的最大公约数为:12
a和b的最小公倍数为:72
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)