将接口作为构造函数传递给类

时间:2017-11-01 17:05:35

标签: java interface

这是我的代码:

public interface Baseinterface {}
abstract class Interface1 implements Baseinterface{}
abstract class Interface2 implements Baseinterface{}

public interface Classinterface {}

我想使用这段代码:

public class Myclass(Baseinterface interfaceversion) implements  Classinterface{}

将接口实现的类型作为构造函数传递。 因此,当在这两个抽象类中定义函数时,我的实际类知道要使用哪一个。我是java的新手。 感谢。

1 个答案:

答案 0 :(得分:1)

我可能误解了这个问题的性质,但这里有:

给定此代码,该代码描述了两个实现与接口定义的方法相同的抽象类:

interface BaseInterface {
    void foo();
}

abstract class ITestA implements BaseInterface {
    public void foo() {
        System.out.print("A");
    }
}

abstract class ITestB implements BaseInterface {
    public void foo() {
        System.out.print("B");
    }
}

public class MyClass {
    private BaseInterface enclosed;

    MyClass(BaseInterface base) {
        enclosed = base;
    }

    public void foo() {
        enclosed.foo(); // call the implementation specific to the instance passed in by constructor
    }
}

这可以称为:

    public class Test {
    void bar() {
        // This may look weird cause we're defining an anonymous implementation of the abstract class, without adding any new implementation details
        ITestA impl = new ITestA() {}; 

        MyClass myClass = new MyClass(impl);
        myClass.foo(); // prints "A"
    }
}