Java构建对象

Apo*_*sal 1 java variables casting reference class

我有两个班:TeacherCoordinator.Coordinator延伸Teacher.

基本上我想创建一个可以接受Teacher实例或Coordinator实例的实例变量.

我知道这很容易通过编写Teacher exp = new Teacher()或者Teacher exp = new Coordinator(),但是当我这样做时,我只能Teacher在应用时访问方法和属性new Coordinator()或者new Teacher()正常的引用变量.我的问题是,还有另外一种方法,我只使用一个可以分配给Teacher OR Coordinator对象的实例变量,并使用此变量来调用分配给对象引用变量的对象的任何属性/方法吗?

Den*_*nis 8

你可以检查exp是否是一个Coordinator演员然后相应地调用它的函数:

if(exp instanceof Coordinator) {
    ((Coordinator)exp).foo();
}
Run Code Online (Sandbox Code Playgroud)

如果您想要做几件事,可以在本地范围内创建一个变量并重复使用它:

if(exp instanceof Coordinator) {
    Coordinator expCoord = (Coordinator)exp;
    expCoord.foo();
    expCoord.bar();
    expCoord.baz();
}
Run Code Online (Sandbox Code Playgroud)