[英]Java: How to access implementation of a method of Sub class from Super class
我需要理解这一点,既然我已经想通了,我想我应该把它放在那里,可能会帮助某人:
如何访问超类中子类提供的方法的实现?
考虑这样一种情况,您正在一个类中实现一个方法,该方法最终会被其他类扩展。 您的类需要的信息只有在子类在运行时提供后才可用。 如何使用在运行时可用的方法?
考虑以下事项:
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 是abstract
,所以它不能被实例化。 可以免费为某些接口方法提供实现,但不必为每个方法都提供它。 它不提供实现的方法必须由子类提供。 并且在运行时,超类中的方法从子类获取实现。 所以在我们的例子中, isDomesticable()
实现不是由 Cat 提供的,而是由 Tiger 实现的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.