Java接口特征

时间:2011-04-17 18:58:07

标签: java oop inheritance interface

假设class2扩展了另一个class1,而class2需要实现某个接口。 class1是否必须实现class2应该实现的相同接口?

示例:

public class Mosquito extends Insect implements FlyingThings {
}
  1. 昆虫是否必须实施FlyingThings?
  2. 或者子类“Mosquito”可以实现超类“Insect”没有实现的类吗?
  3. 逻辑上,我认为,在给定的例子中,答案是否定的,因为昆虫不一定会飞。但是,当然,这个例子在这方面可能会产生误导。

    无论如何,我想提前感谢你的回答。

2 个答案:

答案 0 :(得分:2)

你的理由是正确的:Class1不需要为了Class2而实现接口。

继承Class1的功能和成员时,Class2可以自由添加,或者可以通过覆盖进行更改,无论是哪种功能(通过接口或其他方式)都是合适的。

答案 1 :(得分:0)

嗯,蚂蚁是昆虫,大多数都不会飞。所以蚂蚁飞行是不合适的。

此外,请考虑以下问题:

很有诱惑力

class FlyingInsect extends Insect

但是当你去做蚁后,你就有了这个:

class Ant extends Insect // ants don't fly

class QueenAnt extends Ant // wait she needs to fly though!
class QueenAnt extends FlyingInsect // oh drats, but now she isn't an ant!

这使FlyingThing成为界面的最佳选择。