繁体   English   中英

Java:如何从超类访问子类的方法的实现

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM