我想了解接口在两个类之间的继承中所起的作用。
我的理解是,您可以使用extends
.
class Parent {
}
class Child extends Parent {
}
这对于创建超类和子类已经足够了。
我们什么时候需要接口?我们需要implements
孩子还是父母?
class Parent {
}
class Child extends Parent implements MyInterface {
}
interface MyInterface {
}
我想了解接口在两个类之间的继承中所起的作用。
我的理解是,您可以使用extends
.
class Parent {
}
class Child extends Parent {
}
这对于创建超类和子类已经足够了。
我们什么时候需要接口?我们需要implements
孩子还是父母?
class Parent {
}
class Child extends Parent implements MyInterface {
}
interface MyInterface {
}
继承和接口实现定义了一个is-a关系。这意味着是子类A扩展了超类B,A是-a B。如果超类B实现接口I,B是-a I。并且由于A是-a A , A也是I。
例如,一个 Car(ssuperclass)是一个 Vehicle(接口)。既然奥迪扩展了汽车,奥迪也是车辆。
子类不能小于其父类,但可以更多。因此,子类可能会实现其父类未实现的接口。
例如,所有汽车都不是混合动力车(界面)。但这并不能阻止作为汽车的普锐斯成为混合动力车。普锐斯不仅仅是一辆汽车。它也是一个混合体。
基本上,接口用于为实现它的类创建指南。
接口和父类之间的主要区别是
1)您不能实例化接口(它甚至没有构造函数)
2)它的所有方法必须是抽象的
3)您必须覆盖实现它的类中的所有接口方法.
从基类继承的类的概念独立于实现接口的类。在第一种情况下,继承类“免费”获得其基类的接口和实现;在第二种情况下,检查一个类是否符合它声明要实现的接口。
子类继承其基类实现的接口,但也可以自由实现其他接口。当单个层次结构中的类必须承担多个角色时,这非常方便,具体取决于它们在层次结构中的位置。
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 实现该接口。