发布日期:2018-03-26
implements和extends的区别是什么?+ 查看更多
implements和extends的区别是什么?
+ 查看更多
发布日期:2018-03-10 10:45
分类:JAVA
浏览次数:146
implements和extends:分别适合什么情境?区别是什么?不好意思问了个基础问题,我已经在网上搜索并阅读了一些关于这个话题的文章,但我不是很理解他们说的。
回答
extends 用于扩展一个类(Class),而implements 用于实现一个接口(interface)。接口(interface)和类(Class)之间的区别就是,你不能在接口中实现任何方法。只有“implements”某一个接口的类才能实现那个接口的方法。
在C++中和接口(interface)对应的是虚类(不完全等同但很相近),而且Java不支持多继承类,但可以多继承接口。
为什么要整出这么多概念呢?其实随着你对语言的了解加深,你会发现两个流派(工程派和学院派)。当两个流派的大神无法互相说服对方的时候,往往会导致一个相似的想法或诉求有着两种相似的实现方式(但绝对会有微弱的不同)。虚类和接口就是最好的例子。
public interface ExampleInterface{ public void do(); public String doThis(int number); } public class sub implements ExampleInterface{ public void do(){ //specify what must happen } public String doThis(int number){ //specfiy what must happen } }
然后继承一个类
public class SuperClass{ public int getNb(){ //specify what must happen return 1; } public int getNb2(){ //specify what must happen return 2; } } public class SubClass extends SuperClass{ //you can override the implementation @Override public int getNb2(){ return 3; } }在这个例子中
Subclass s = new SubClass(); s.getNb(); //returns 1 s.getNb2(); //returns 3 SuperClass sup = new SuperClass(); sup.getNb(); //returns 1 sup.getNb2(); //returns 2我建议你对面向对象编程中的动态绑定,多态性和继承做一些更多的研究