接口是在Java中创建多重继承的唯一方法。
假设您创建了一个班级
Animal。包括人类在内的所有动物都将其延伸。这些动物中的每一个都继承了吃,呼吸等常用方法。
但是,现在让我们说您有一
MathProblem堂课。并且您希望具有某些类,可以通过将问题传递给
solve(MathProblemproblem)方法来解决该问题。而且您知道
Human,但也
Computer可以解决数学问题。因此,他们俩都必须能够解决该问题。您可能可以使计算机扩展
MathSolver具有该方法的某些类,但是Human已经扩展了Animal,并且不能扩展其他任何东西。所以,更好的办法是让MathSolver的接口,并同时拥有
Human,
Computer以及其他任何类,需要解决的问题,实现一个。
还要注意,a
Human和a
Computer可能以完全不同的方式解决问题,因为它们的对象不同。这就是最适合的接口。定义跨越多个继承层次结构的某些功能,这些功能可以有非常不同的实现,但是可以全部传递给接受其中任何一个的方法。想想
Comparable界面;它不是某类对象所具有的东西,可以比较各种事物,并且通常以非常不同的方式进行比较。但是,你可以随时调用排序上
List的
Comparable对象,因为你知道他们有一定的顺序,不管他们是
Numbers,
Animals,
Computers或其他任何东西(只要它们实现
Comparable并定义它们的顺序)。



