接口继承和实现继承

Article Directory

This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.

封面来自CSAPP中的存储器山


今天看了cs61b的4.1,里面提到interface inheritance implementation inheritance的概念。尽管课程中举了例子来说明这一点,但是对来我说似乎有点不直观。

Interface inheritance (what): Simply tells what the subclasses should be able to do.
EX) all lists should be able to print themselves, how they do it is up to them.
Implementation inheritance (how): Tells the subclasses how they should behave.
EX) Lists should print themselves exactly this way: by getting each element in order and then printing them.

于是我另外搜索了一些博客,得到如下的回答。

接口继承: 派生类只继承函数接口,也就是声明。
实现继承:派生类同时继承函数的接口和实现。

这样的用词显得更加严肃一点,似乎给了我更多的信心。

总之,为了让这篇文章更有价值,我写下我的理解。

接口继承:子类(或是派生类,我其实并不懂什么是派生类)所继承的是一个和多个接口(即真正的接口,没有实现)(尽管在java中,要用到implements来实现接口,但他就是接口继承)。

实现继承:其父类带有部分函数的实现,实际上,它就不再是狭义的接口了。(尽管可以)。

感觉我说的相当复杂,而且没什么逻辑。简而言之,就是接口继承,就是子类继承的是一个纯虚函数,父类没有带任何的实现。而实现继承,则是父类带有部分函数或者全部函数的实现,子类可以沿用或者override。