编写一个类,该类有如下方法: public int f(int a,int b){ … //要求该方法返回a和b的最大公约数 } 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数
时间: 2024-02-01 18:15:26 浏览: 38
可以这样实现:
```
public class GCDAndLCM {
public int f(int a, int b) {
// 计算最大公约数
int m = a % b;
while (m != 0) {
a = b;
b = m;
m = a % b;
}
return b;
}
public static void main(String[] args) {
int a = 12;
int b = 18;
GCDAndLCM gcdAndLcm = new GCDAndLCM();
int gcd = gcdAndLcm.f(a, b);
int lcm = a * b / gcd;
System.out.println("a=" + a + ", b=" + b + ", 最大公约数=" + gcd + ", 最小公倍数=" + lcm);
GCDAndLCMChild gcdAndLcmChild = new GCDAndLCMChild();
int gcd2 = gcdAndLcmChild.f(a, b);
int lcm2 = a * b / gcd2;
System.out.println("a=" + a + ", b=" + b + ", 最大公约数=" + gcd2 + ", 最小公倍数=" + lcm2);
}
}
class GCDAndLCMChild extends GCDAndLCM {
@Override
public int f(int a, int b) {
int gcd = super.f(a, b);
return a * b / gcd;
}
}
```
输出结果为:
```
a=12, b=18, 最大公约数=6, 最小公倍数=36
a=12, b=18, 最大公约数=6, 最小公倍数=36
```
阅读全文