编写一个类,该类有如下方法: public int f(int a,int b){ … } (要求该方法返回a和b的最大公约数) 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。
时间: 2023-07-15 18:15:29 浏览: 81
Android String类型转换为float、double和int的工具类方法
可以这样实现:
```
public class GCD_LCM {
public int f(int a, int b) {
// 计算最大公约数
int gcd = 1;
for (int i = 1; i <= a && i <= b; i++) {
if (a % i == 0 && b % i == 0) {
gcd = i;
}
}
return gcd;
}
public static void main(String[] args) {
GCD_LCM gcdLcm = new GCD_LCM();
int a = 12, b = 18;
// 计算最大公约数
int gcd = gcdLcm.f(a, b);
System.out.println("最大公约数:" + gcd);
// 计算最小公倍数
int lcm = (a*b)/gcd;
System.out.println("最小公倍数:" + lcm);
// 创建子类对象
GCD_LCM_Sub sub = new GCD_LCM_Sub();
// 调用子类的方法
int lcm2 = sub.f(a, b);
System.out.println("最小公倍数:" + lcm2);
}
}
class GCD_LCM_Sub extends GCD_LCM {
@Override
public int f(int a, int b) {
// 调用父类的方法获取最大公约数
int gcd = super.f(a, b);
// 计算最小公倍数
int lcm = (a*b)/gcd;
return lcm;
}
}
```
运行结果为:
```
最大公约数:6
最小公倍数:36
最小公倍数:36
```
其中,父类 GCD_LCM 中的 f 方法实现了求两个正整数的最大公约数;子类 GCD_LCM_Sub 继承了父类 GCD_LCM,重写了 f 方法,实现了求两个正整数的最小公倍数。在子类的 f 方法中,首先调用了父类的 f 方法,获取了最大公约数,然后根据最大公约数计算出最小公倍数。在主函数中,我们分别使用父类和子类创建对象,并调用对应的 f 方法,计算了两个正整数的最大公约数和最小公倍数。
阅读全文