实现与扩展:何时使用?有什么区别?
2022-08-31 04:04:16
请用易于理解的语言或指向某些文章的链接进行解释。
请用易于理解的语言或指向某些文章的链接进行解释。
extends
用于扩展类。
implements
用于实现接口
接口和常规类之间的区别在于,在接口中不能实现任何声明的方法。只有“实现”接口的类才能实现这些方法。接口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
我建议你对面向对象编程中的动态绑定、多态性和一般继承做更多的研究。
我注意到您的个人资料中有一些C++问题。如果您了解从C++多重继承的概念(指的是从多个其他类继承特征的类),Java不允许这样做,但它确实有关键字 ,这有点像C++中的纯虚拟类。正如很多人所提到的,你是一个类(你只能从一个类扩展),你是一个接口 - 但是你的类可以实现任意数量的接口。interface
extend
implement
也就是说,这些关键字和管理其使用的规则描绘了Java中多重继承的可能性(您只能有一个超类,但您可以实现多个接口)。