我想了解接口在两个类之间的继承中扮演的角色。
我的理解是你可以使用extends
创建超类和子类。
class Parent {
}
class Child extends Parent {
}
这已经足以创建超类和子类。
我们什么时候需要界面?对于孩子或父母,我们需要implements
吗?
class Parent {
}
class Child extends Parent implements MyInterface {
}
interface MyInterface {
}
答案 0 :(得分:2)
继承和接口实现定义了 is-a 关系。这意味着子类A扩展了超类B,A 是-a B.如果超类B实现了接口I,则B 是-a I.并且因为A 是-a A,A 也是 a I。
例如,Car(ssuperclass)是Vehicle(接口)。自奥迪推出汽车以来,奥迪也是一款车型。
子类不能小于其父类,但它可以更多。因此,子进程可以实现其父类未实现的接口。
例如,所有汽车都不是混合动力(接口)。但这并不能阻止作为汽车的普锐斯成为混合型汽车。普锐斯不仅仅是一辆汽车。它也是混合体。
答案 1 :(得分:1)
interface MyInterface {
}
class Parent implements MyInterface{
}
class Child extends Parent {
// Implements MyInterface because it's parent does
}
class Child2 extends Parent implements AnotherInterface {
// Child2 class now implements both
// MyInterface as well as AnotherInterface
}
不确定您是否要求扩展接口,但这也是可能的:
interface MyInterface {
}
interface MySecondInterface extends MyInterface {
}
如果希望类使用所描述的常量并定义接口中包含的方法签名,则可以实现接口。
因此,如果您希望PARENT类使用常量并定义方法,那么您的PARENT将实现该接口。如果您希望您的CHILD类类使用常量并定义方法,那么您的CHILD将实现该接口。
答案 2 :(得分:1)
从基类继承的类的概念独立于实现接口的类。在第一种情况下,继承类获取其“免费”基础的接口和实现;在第二种情况下,一个类被检查以符合它声明要实现的接口。
子类继承其基础实现的接口,但它也可以自由地实现其他接口。当单个层次结构中的类必须承担多个角色时,这非常方便,具体取决于它们在层次结构中的位置。
答案 3 :(得分:1)
基本上,接口用于为实现它的类创建指南。
接口和父类之间的主要差异是
1)你无法实例化界面(它甚至没有构造函数)
2)所有方法必须是抽象的
3)您必须覆盖实现它的类中的所有接口方法。