编写一个类,该类有如下方法:public int f(int a,int b,要求该方法返回a和b的最大公约数,再编写一个该类的子类,要求子类重写方法f,而且重写的方法将返回两个整数的最小公倍数。要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将a*b/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f计算两个正整数的最大公约数和最小公倍数)
时间: 2023-07-16 11:15:03 浏览: 89
下面是代码实现:
```java
public class GCD {
public int f(int a, int b) {
if (b == 0) {
return a;
} else {
return f(b, a % b);
}
}
}
public class LCM extends GCD {
@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) {
int a = 12, b = 18;
GCD gcd = new GCD();
System.out.println(gcd.f(a, b));
LCM lcm = new LCM();
System.out.println(lcm.f(a, b));
}
}
```
输出:
```
6
36
```
其中,`GCD`类实现了求最大公约数的方法`f`,使用递归不断求解余数,直到余数为0,此时被除数即为最大公约数。
`LCM`类继承了`GCD`类,并重写了`f`方法,先通过`super.f`调用父类方法求出最大公约数,再根据两个数的积除以最大公约数得到最小公倍数。
在主类`Main`中,先创建`GCD`对象求最大公约数,再创建`LCM`对象求最小公倍数。
阅读全文