java编写一个类,该类有如下方法: public int f(int a,int b)( ... //要求该方法返回a 和b的最大公约数 ] 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。
时间: 2024-02-09 14:11:56 浏览: 70
父类代码如下:
```java
public class MyMath {
public int f(int a, int b) {
int min = Math.min(a, b);
int max = Math.max(a, b);
int r = max % min;
while (r != 0) {
max = min;
min = r;
r = max % min;
}
return min;
}
}
```
子类代码如下:
```java
public class MyMathSub extends MyMath {
@Override
public int f(int a, int b) {
int m = super.f(a, b);
return (a * b) / m;
}
}
```
应用程序的主类代码如下:
```java
public class Main {
public static void main(String[] args) {
int a = 12;
int b = 18;
MyMath myMath = new MyMath();
MyMathSub myMathSub = new MyMathSub();
int gcd = myMath.f(a, b);
int lcm = myMathSub.f(a, b);
System.out.println(a + "和" + b + "的最大公约数为:" + gcd);
System.out.println(a + "和" + b + "的最小公倍数为:" + lcm);
}
}
```
输出结果:
```
12和18的最大公约数为:6
12和18的最小公倍数为:36
```
阅读全文