假设我有一个主类在其自身内声明一个接口,并且我有两个不同的类(在主类外声明)来实现接口。这是我的意思的一个例子
class ClassMain{
interface InFace{
void implementMethod();
}
InFace inFace;
public someMethod(){
inFace.implementMethod();
}
}
//class A implements InFace
class A implements InFace{
void implementMethod(){
doSomeOneThing;
}
}
//class B implents InFace
class B implements InFace{
void implementMethod(){
doSomeTwoThing;
}
}
当接口InFace的对象inFace从ClassMain调用implementMethod时会发生什么?是要执行soSomeOneThing还是doSomeTwoThing?
答案 0 :(得分:1)
代码将抛出NullPointerException,因为inFace
尚未实例化。
您需要为声明的变量inFace
分配实现。
这可以是A类或B类。
InFace inFace = new A();
在当前示例中,您应该向ClassMain添加一个构造函数,以允许从外部自定义inFace
。
答案 1 :(得分:0)
在同一命名方法中执行不同计算的一些常见Classes
可以与Interface
分组。
假设您有一个InFace界面列表
List<InFace> faces = new ArrayList<Inface>();
faces.add(new A());
faces.add(new B());
如您所见,可以将两个不同的类添加到列表中,因为它们实现了InFace界面。
faces.get(0).implementMethod(); //class A will run
faces.get(1).implementMethod(); //class B will run