4、设有2个类(接口、抽象类)A和B,请给出3种不同的代码实例,使得A类和B类产生对象耦合,并阐述3个实例耦合程度高低。给出java代码
时间: 2024-10-19 10:13:45 浏览: 12
《JAVA语言程序设计》期末考试试题及答案(word文档良心出品).doc
在Java中,要创建对象耦合,我们可以使用继承、接口、成员变量访问等方式。以下是三个示例,展示了不同级别的对象耦合:
**1. 数据耦合(Low Coupling)**
```java
// 父接口或抽象类 A
public interface IA {
void methodA();
}
// 子类 B 实现接口 A
public class BImpl implements IA {
private String sharedData; // 共享数据
public void methodA() {
// 使用共享数据
System.out.println("Using shared data from " + sharedData);
}
}
// 创建A类和B类的对象并访问共享数据
IA a = new BImpl();
a.methodA(); // 输出:Using shared data from (value)
```
在这个例子中,耦合较低,因为A类只是通过接口引用B类,而没有直接控制其内部行为。
**2. 控制耦合(Medium Coupling)**
```java
// 抽象类 A
abstract class AB {
protected abstract void internalMethod();
public void methodB() {
internalMethod(); // 控制B类的行为
}
}
// 子类 B 继承自 A
public class BImpl extends AB {
@Override
protected void internalMethod() {
System.out.println("Internal method of B");
}
}
// 创建A类和B类的对象并调用方法B
AB bObject = new BImpl();
bObject.methodB(); // 输出:Internal method of B
```
这里A类通过方法控制B类的内部行为,耦合度稍高。
**3. 高度耦合(High Coupling)**
```java
// 类 A 直接依赖于类 B 的私有属性
class A {
private B bInstance;
public A(B b) {
this.bInstance = b;
}
public void complexOperation() {
bInstance.doSomethingSpecific(); // 高度依赖B类的具体实现
}
}
// 类 B
class B {
// ...
}
```
在这个例子中,A类直接持有B类的实例,A类的任何操作都依赖于B类的具体功能,这是高度耦合,修改B类可能会直接影响A类的功能。
阅读全文