我刚刚学习oop并且正在努力解决继承和多态之间的差异。
如果我理解正确,继承定义了类型层次结构和类之间的关系。子类从父类继承行为,并且可以提供父级上任何公共接口的专门行为。
多态性是这些子类可以在仍然遵循父接口的同时提供自己的行为。
这是不是同样的事情?
答案 0 :(得分:10)
你是对的,在大多数OO语言中,继承和多态与另一种语言相互依存。但是:
答案 1 :(得分:2)
最好的方法是通过继承来实现多态。 继承定义了层次结构和is-a原则,因此可以实现多态性。
答案 2 :(得分:0)
继承也可以用来(不再被认为是一种好的做法)来继承和扩展功能。
class MovableObject {
protected: // usable in subclasses
position: Point;
public:
void Move(Vector diff) { position += diff; }
}
class Car: private MovableObject { // private inheritance hides the interface
private:
float fuelLeft;
public Drive(Vector diff, float fuelSpent) {
Move(diff);
fuelLeft -= fuelSpent;
}
}
当然,这不是最好的类设计,但并不意味着它,但它说明了如何在没有多态的情况下继承。