编写两个类:A 和 B,A创建的对象可以计算两个正整数的最大公约数,B创建的对象可以计算两个数的最小公倍数。要求:B类中有一个成员变量是用A类声明对象。写出详细Java代码
时间: 2024-10-21 17:11:04 浏览: 30
首先,我们需要创建一个`gcd`类(代表最大公约数),然后创建一个`lcm`类,后者将`gcd`类作为内部成员变量。下面是详细的Java代码:
```java
// 创建一个计算最大公约数的A类
class GCD {
// 使用欧几里得算法计算最大公约数
private int gcd(int num1, int num2) {
if (num2 == 0) {
return num1;
} else {
return gcd(num2, num1 % num2);
}
}
// 计算给定两个正整数的最大公约数
public int calculate(int num1, int num2) {
return gcd(Math.abs(num1), Math.abs(num2));
}
}
// 创建一个计算最小公倍数的B类,内部包含了A类的对象
class LCM {
private GCD gcdInstance; // A类对象
// 初始化时,通过A类构造函数获取一个A类对象
public LCM(int num1, int num2) {
gcdInstance = new GCD();
}
// 计算两个数的最小公倍数
public int calculateLCM(int num1, int num2) {
int lcm = (num1 * num2) / gcdInstance.calculate(num1, num2);
return lcm;
}
}
// 示例用法:
LCM lcmCalculator = new LCM(48, 18);
int result = lcmCalculator.calculateLCM(48, 18);
```
在这个例子中,`A`类被隐藏了,直接暴露的是`B`类,它的`lcm`方法会使用内部的`GCD`对象来计算最小公倍数。
阅读全文