在Java中,可以通过实现相同的接口来传递给构造函数不同的类。以下是一个示例代码:
// 定义接口
interface MyInterface {
void doSomething();
}
// 实现不同的类
class ClassA implements MyInterface {
@Override
public void doSomething() {
System.out.println("ClassA do something");
}
}
class ClassB implements MyInterface {
@Override
public void doSomething() {
System.out.println("ClassB do something");
}
}
// 接收不同的类实现的构造函数
class MyClass {
private MyInterface myInterface;
public MyClass(MyInterface myInterface) {
this.myInterface = myInterface;
}
public void performAction() {
myInterface.doSomething();
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
MyClass classInstanceA = new MyClass(new ClassA());
classInstanceA.performAction(); // 输出 "ClassA do something"
MyClass classInstanceB = new MyClass(new ClassB());
classInstanceB.performAction(); // 输出 "ClassB do something"
}
}
在上面的示例中,我们定义了一个接口MyInterface
,并让ClassA
和ClassB
分别实现了这个接口。然后在MyClass
中,我们通过构造函数接收一个MyInterface
类型的参数,并保存在实例变量myInterface
中。在performAction
方法中,我们调用了myInterface
的doSomething
方法。
在Main
类中,我们创建了MyClass
的两个不同实例,分别传入ClassA
和ClassB
的实例作为参数,然后调用performAction
方法,即可实现不同的类实现相同的接口传递给构造函数的目的。