实现VS扩展:何时使用? 有什么不同?

请用易于理解的语言或某篇文章的链接来解释。


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

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


我注意到你的配置文件中有一些C ++问题。 如果你理解C ++中多重继承的概念(指的是继承来自多个其他类的特性的类),Java不允许这样做,但它确实有关键字interface ,它有点像C ++中的纯虚拟类。 正如很多人所提到的,您extend了一个类(并且您只能从一个类扩展),并且implement了一个接口 - 但是您的类可以根据需要实现多个接口。

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


extends于从基类继承(即扩展其功能)的情况。

当你正在实现一个接口时,这些implements就是用来实现的

这是一个很好的开始:接口和继承。

链接地址: http://www.djcxy.com/p/16385.html

上一篇: Implements vs extends: When to use? What's the difference?

下一篇: ExecutorService vs Casual Thread Spawner