本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
问题描述
请以易于理解的语言或一些相关文章的链接进行解释。
部分高赞回答
最高赞回答(779赞)
extends
是一个用于扩展(extending)的类。
implements
是一个用于实现(implementing)的接口。
接口和常规类之间的区别是,在接口中不能实现任何已声明的方法。只有“实现”接口的类才能实现这些方法。C++中与接口等价的是一个抽象类(虽然不是完全相同,但也差不多)。
Java也不支持类的多重继承。这通过使用多个接口来解决。
public interface ExampleInterface {
public void doAction();
public String doThis(int number);
}
public class sub implements ExampleInterface {
public void doAction() {
//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
另外,请注意,实现界面不需要@Override
标签,因为未覆盖原始接口方法中的任何内容。我建议你对面向对象编程中的动态绑定,多态性和普遍继承进行更多研究。
第二高赞回答(82赞)
我注意到你的个人资料中有一些C++问题。如果您了解从C++的多继承的概念(参考从多个其他类继承特征的类),Java不允许此操作,但它确实有关键字interface
,这是C++中的纯虚拟类。如很多人所述,您扩展(extend
)了一个类(并且只能从一个延伸),并且您实现了一个接口。但是您的类可以在您喜欢时实现(implement
)多个接口。
即这些关键字和管理它们使用的规则描绘了Java中多重继承的可能性(你只能拥有一个超级类,但你可以实现多个接口)。
本文翻译自Stack Overflow。关于翻译文章,聆风也相对生疏,难免有错漏,欢迎各位大佬在评论区批评指正,谢谢!