我需要理解这一点,现在我已经弄清楚了这一点,我想我应该把它放在那里,也许可以帮助某人:如何访问超类内部子类提供的方法的实现?考虑这样一种情况,即您正在一个类中实现一个方法,该方法最终将由其他类扩展。您的类需要的信息仅在子类在运行时提供后才可用。如何使用在运行时可用的方法?
1 回答
GCT1015
TA贡献1827条经验 获得超4个赞
请考虑以下事项:
public interface Animal {
bool isVertebrate();
bool isDomesticable();
}
和一个实现此接口的抽象类:
abstract class Cat implements Animal {
public bool isVertebrate() {return true;}
public void dealWithCat(){
if (isDomesticable()){
...
}
}
但是 的实现被委托给子类:isDomesticable
public class Tiger extends Cat {
public bool isDomesticable(){
return false;
}
由于 Cat 是 ,因此无法实例化。它可以自由地为某些接口方法提供实现,但不必为每个方法提供它。它不提供实现的方法必须由子类提供。在运行时,超类中的方法从子类获取实现。因此,在我们的示例中,的实现不是由 Cat 提供的,而是由 Tiger 稍后实现的。abstractisDomesticable()
添加回答
举报
0/150
提交
取消
