我有一个接口(称为 Planet),其实现类受到保护,并且我无法更改其访问修饰符。但是,我需要在主类中调用实现类的方法。例如,在实现类中,我有:public void orbit() {distance++;}
我努力了:private Planet planet = new PlanetImpl
,但由于 PlanetImpl 类受到保护并且位于不同的包中,因此无法找到它,从而使该语句无效。我也尝试过将其保留为空,就像这样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");
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)