我有一个接口(称其为Planet),其实现类受保护,并且我不能为此更改访问修饰符。但是,我需要在主类内部调用实现类的方法。例如,在实现类中,我有:public void orbit() {distance++;}
我已经尝试过:private Planet planet = new PlanetImpl
,但是由于PlanetImpl类是受保护的并且位于不同的包中,因此找不到它,从而使该语句无效。我也尝试过将其保留为null,就像这样,Planet planet; planet.orbit();
但是它抛出NullPointerException。是否可以在不直接引用实现类的情况下调用方法?
使用匿名内部类,我们可以做到。匿名类可以实现接口,我认为那时只有您有机会看到一个类在没有“ implements”关键字的情况下实现接口。
interface Planet {
public void orbit();
}
class PlanetMain {
private Planet p = new Planet () {
public void orbit() {
System.out.println("interface Planet class executed");
}
};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句