用代码编写一个类,该类有如下方法: public int f(int a,int b){ … //要求该方法返回a和b的最大公约数 } 再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。 要求:在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。
时间: 2024-02-05 21:05:21 浏览: 68
cpp代码-大作业第五题: 定义一个date类如下: class Date { public: void SetDate(int y,int m,int d); void IsLeapYear(); private: int year; int month; int day; }; 要求: (1)编写SetDate(int y,int m,int d)函数,实现对象中数据成员的设置; (2)编写IsLeapYear()判断该年是否是闰年。
代码如下:
```
public class MathUtil {
public int f(int a, int b) {
// 计算最大公约数
int m = gcd(a, b);
// 返回最小公倍数
return (a * b) / m;
}
/**
* 求最大公约数
*/
private int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
}
public class MathUtilSub extends MathUtil {
@Override
public int f(int a, int b) {
// 调用父类的方法求最大公约数
int m = super.f(a, b);
// 返回最小公倍数
return (a * b) / m;
}
}
public class Test {
public static void main(String[] args) {
MathUtil mathUtil = new MathUtil();
int a = 12;
int b = 18;
System.out.println("a和b的最大公约数为:" + mathUtil.f(a, b));
MathUtilSub mathUtilSub = new MathUtilSub();
System.out.println("a和b的最小公倍数为:" + mathUtilSub.f(a, b));
}
}
```
运行结果:
```
a和b的最大公约数为:6
a和b的最小公倍数为:36
```
阅读全文