请用Java语言编写两个类,A和B,A创建的对象可以计算两个正整数的最大公约数,B创建的对象可以计算两个数的最小公倍数。要求:B类中有一个成员变量是用A类声明对象的。
时间: 2024-10-11 11:16:28 浏览: 31
在Java中,我们可以创建一个名为`GCDCalculator`的公共抽象类作为A类的基础,然后分别为A类和B类实现最大公约数的计算。接着我们创建另一个类`LCMCalculator`,它内部持有`GCDCalculator`类型的对象用于计算最小公倍数。以下是代码示例:
```java
// A类 - GCDCalculator (最大公约数计算)
public abstract class GCDCalculator {
public abstract int gcd(int a, int b);
}
// A的具体实现
public class GCDImpl implements GCDCalculator {
@Override
public int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
}
// B类 - LCMCalculator (最小公倍数计算,包含A类的对象)
public class LCMCalculator {
private GCDCalculator gcdCalculator;
public LCMCalculator(GCDCalculator gcd) {
this.gcdCalculator = gcd;
}
// 使用A类的对象计算最小公倍数
public int lcm(int a, int b) {
return a * b / gcdCalculator.gcd(a, b);
}
}
// 主程序
public class Main {
public static void main(String[] args) {
// 创建A类的对象
GCDCalculator gcdImpl = new GCDImpl();
// 创建B类的对象并传入A类的对象
LCMCalculator lcmCalc = new LCMCalculator(gcdImpl);
// 使用B类对象计算两个数的最小公倍数
int num1 = 12;
int num2 = 18;
System.out.println("LCM of " + num1 + " and " + num2 + " is: " + lcmCalc.lcm(num1, num2));
阅读全文