我有两个类:Teacher
和Coordinator
。 Coordinator
扩展Teacher
。
基本上,我想制作一个可以包含Teacher
实例或Coordinator
实例的实例变量。
我知道仅通过编写Teacher exp = new Teacher()
或Teacher exp = new Coordinator()
即可轻松实现,但是当我这样做时,只有将Teacher
或new Coordinator()
应用于引用变量时,我才能访问new Teacher()
方法和属性。是正常的。我的问题是,是否有另一种方式,我仅使用一个可以分配给Teacher或Coordinator对象的实例变量,并使用此变量来调用分配给对象引用变量的对象的任何属性/方法?
最佳答案
您可以检查exp是否为Coordinator
,然后进行强制转换并相应地调用其函数:
if(exp instanceof Coordinator) {
((Coordinator)exp).foo();
}
如果您要执行几项操作,则可以在本地范围内创建变量并重复使用:
if(exp instanceof Coordinator) {
Coordinator expCoord = (Coordinator)exp;
expCoord.foo();
expCoord.bar();
expCoord.baz();
}