Implements vs extends:何时使用?有什么不同?

问题

请用易于理解的语言或某些文章的链接进行解释。


#1 热门回答(573 赞)

extends是forextendinga类。

implements用于实现接口

接口和常规类之间的区别在于,在接口中,你无法实现任何声明的方法。只有"实现"接口的类才能实现这些方法。接口的C等价物将是一个抽象类(不完全相同但几乎相同)。

此外,java不支持36041827多个继承**类。这可以通过使用多个接口来解决。

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

我建议你做更多的研究动态绑定,多态和面向对象编程中的一般继承


#2 热门回答(72 赞)

我注意到你的个人资料中有一些C问题。如果你理解C的多重继承的概念(指的是从多个其他类继承特性的类),Java不允许这样做,但它确实有关键字interface,它有点像C中的纯虚拟类。正如很多人所提到的那样,youextend是一个类(并且你只能从一个扩展)和你的implementan接口 - 但你的类可以实现任意数量的接口。

即,这些关键字及其使用规则描述了Java中多重继承的可能性(你只能拥有一个超类,但你可以实现多个接口)。


#3 热门回答(34 赞)

extends用于从abase类继承时(即扩展其功能)。

implements用于实现接口时。

这是一个很好的起点:接口和继承。