如何将接口变量分配给子接口变量?

时间:2017-10-28 13:35:58

标签: java interface instance

我有这些接口:

public interface Interface {   
    int functionOne(); 
}

public interface SubInterface extends Interface {
    String functionTwo();
}

和这堂课:

public class MyClass implements SubInterface {
...
}

现在问题在于:

Interface a = new MyClass();
SubInterface b = a;

我想将 a 正在寻址的MyClass实例分配给变量 b 。我不想创建一个相同的实例,只需将现有的地址从 a 转移到 b ,但如果我这样做,netbeans会给我一个错误不兼容的类型。我该怎么做?

1 个答案:

答案 0 :(得分:1)

目前,您的代码无法编译,因为a的类型为Interface且无法分配给SubInterface类型的变量。因此你需要这样做:

SubInterface b = (MyClass)a;

如果你考虑一下;它完全合理,因为并非Interface的每种实现类型都实现SubInterface

如果你不知道实现类的实际类型,那么你可以这样做:

SubInterface b = (SubInterface) a;

更安全。