用Java,编写一个类,该类有如下方法: public int f(int a,int b){ … //要求该方法返回a和b的最大公约数 } 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。
时间: 2024-02-12 17:06:05 浏览: 77
java代码-编写一个类
下面是符合要求的Java代码实现:
```java
public class MathUtil {
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 static void main(String[] args) {
MathUtil util = new MathUtil();
int a = 12, b = 18;
System.out.println("a = " + a + ", b = " + b);
System.out.println("最大公约数:" + util.f(a, b));
System.out.println("最小公倍数:" + LCM.calc(a, b));
}
}
class LCM extends MathUtil {
@Override
public int f(int a, int b) {
int m = super.f(a, b);
return (a * b) / m;
}
public static int calc(int a, int b) {
LCM lcm = new LCM();
return lcm.f(a, b);
}
}
```
这个程序中,MathUtil类包含一个方法f()和一个辅助方法gcd(),分别计算最大公约数和最小公倍数。LCM类继承自MathUtil类,并重写了方法f(),在方法体中首先调用父类中被隐藏的方法f(),计算出两个整数的最大公约数,然后将两个整数相乘除以最大公约数即可得到最小公倍数。最后,我们在主类中分别使用MathUtil和LCM类创建对象,并调用方法f()计算两个正整数的最大公约数和最小公倍数。
阅读全文