java中编写两个类,A和B,A创建的对象可以计算两个正整数的最大公约数,B创建的对象可以计算两个数的最小公倍数。要求:B类中有一个成员变量是用A类声明对象的。的完整代码
时间: 2024-09-30 11:02:11 浏览: 44
输入两个正整数m和n求其最大公约数和最小公倍数 (2).pdf
在 Java 中,你可以通过以下方式实现这个需求。首先,我们需要创建一个公共接口 `MathCalculator`,然后分别创建 `A` 类和 `B` 类,其中 `B` 类有一个 `A` 类类型的实例作为成员变量。下面是一个简单的示例:
```java
// 创建公共接口 MathCalculator
public interface MathCalculator {
int calculate(int a, int b);
}
// A 类,实现最大公约数计算
public class A implements MathCalculator {
@Override
public int calculate(int a, int b) {
// 使用欧几里得算法或其他方法计算最大公约数
return gcd(a, b);
}
private static int gcd(int num1, int num2) {
if (num2 == 0) {
return num1;
}
return gcd(num2, num1 % num2);
}
}
// B 类,实现最小公倍数计算,包含A类的引用
public class B {
private A mathCalculator;
public B() {
this.mathCalculator = new A();
}
public int lcm(int a, int b) {
// 使用数学公式 lcm(a, b) = |a * b| / gcd(a, b)
int gcdResult = mathCalculator.calculate(a, b); // 调用 A 的 gcd 方法
return Math.abs(a * b) / gcdResult;
}
}
```
在这个例子中,`A` 类实现了 `MathCalculator` 接口,而 `B` 类中有一个 `mathCalculator` 属性,它是 `A` 类的实例。`B` 类的 `lcm` 方法会利用 `A` 类的 `calculate` 方法来计算两个数的最小公倍数。
阅读全文