java - Implements vs extends : When to use? 有什么区别?

标签 java inheritance interface extends implements

请用通俗易懂的语言或文章的链接进行说明。

最佳答案

extends 用于扩展一个类。

implements 用于实现一个接口(interface)

接口(interface)和普通类的区别在于,在接口(interface)中你不能实现任何声明的方法。只有“实现”接口(interface)的类才能实现方法。接口(interface)的 C++ 等价物将是一个抽象类(不完全相同,但几乎相同)。

java 也不支持类的多重继承。这是通过使用多个接口(interface)来解决的。

 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

另外,请注意,实现接口(interface)不需要 @Override 标签,因为在原始接口(interface)方法中没有任何内容要被覆盖

我建议您对面向对象编程中的动态绑定(bind)、多态性和一般继承进行更多研究

关于java - Implements vs extends : When to use? 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10839131/

相关文章:

java - 在 Netbeans 查找选项中将 "*"作为字符串搜索

使用 Openssl 和 Client Auth 连接到服务器的 Java 客户端

javascript - 使用空函数作为继承的构造函数会混淆 javascript 中的 instanceof?

Java - 仅使用 "<? extends Interface>"与接口(interface)

delphi - 是否有像 TInterfacedObject 这样的非引用计数基类?

java - 如何将电子邮件和密码值保存在从选择查询检索到的变量中

java - 读取文件时出现 ArrayIndexOutOfBoundsException

c# - 我需要有关 "this"关键字和继承的帮助

java - 继承会破坏封装吗?

c# - 转换列表<T>(其中 T : IBar) to ICollection<IBar> fails