2021-04-18 11:00  阅读(138)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-class-instance.html

Java面向对象设计 - Java接口实现

实现接口

接口指定对象必须提供的协议。

类可以提供接口的抽象方法的部分实现,并且在这种情况下,类必须将自身声明为抽象。

实现接口的类使用“implements”子句来指定接口的名称。

“实现”子句由关键字implements,后跟逗号分隔的接口类型列表组成。

一个类可以实现多个接口。

实现接口的类声明的一般语法如下:

    <modifiers> class  <class-Name>  implements <comma-separated-list-of-interfaces>  {
        // Class body  goes  here
    }
    

假设有一个Circle类。

    public class Circle implements Shape {
       void  draw(){
          System.out.println("draw circle");
       }
    }
    

实现接口的类必须重写以实现接口中声明的所有抽象方法。否则,类必须声明为abstract。

接口的默认方法也由实现类继承。

植入类可以选择不需要重写默认方法。

接口中的静态方法不会被实现类继承。

下面的代码定义了两种引用类型,一种来自Circle类,另一种来自接口类型。

    Circle c = new Circle(); 
    Shape shape = new Circle();
    

变量c是Circle类型。它指的是Circle对象。

第二个赋值也是有效的,因为Circle类实现了Shape接口,而Circle类的每个对象也都是Shape类型。

实现接口方法

当一个类完全实现了一个接口时,它为所实现的接口的所有抽象方法提供一个实现。

接口中的方法声明包括方法的约束。例如,方法声明中的throws子句是方法的约束。

    import java.io.IOException;
    interface Shape {
      void draw(double amount) throws IOException;
    }
    class Main implements Shape{
    
      @Override
      public void draw(double amount) {
        // TODO Auto-generated method stub
      }  
    }
    

Main的代码是有效的,即使它丢弃了throws子句。当类覆盖接口方法时,允许删除约束异常。

如果我们使用Shape类型,我们必须处理IOException。

    import java.io.IOException;
    
    interface Shape {
      void draw(double amount) throws IOException;
    }
    class Main implements Shape{
    
      @Override
      public void draw(double amount) {
        // TODO Auto-generated method stub
        
      }
      public void anotherMethod(){
        Shape s = new Main();
        try {
          s.draw(0);
        } catch (IOException e) {
          e.printStackTrace();
        }
        draw(0); 
      }
    }
    

实现多个接口

一个类可以实现多个接口。类实现的所有接口都在类声明中的关键字implements之后列出。

通过实现多个接口,类同意为所有接口中的所有抽象方法提供实现。

    interface Adder {
      int add(int n1, int n2);
    }
    interface Subtractor {
      int subtract(int n1, int n2);
    }
    class Main implements Adder, Subtractor {
      public int add(int n1, int n2) {
        return n1 + n2;
      }
      public int subtract(int n1, int n2) {
        return n1 - n2;
      }
    }
    

部分实现接口

类不必为所有方法提供实现。

如果一个类不提供接口的完全实现,它必须声明为abstract。

    interface Calculator {
      int add(int n1, int n2);
    
      int subtract(int n1, int n2);
    }
    abstract class Main implements Calculator{
      public int add(int n1, int n2) {
        return n1 + n2;
      }
    }
    
点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 接口实现
上一篇
Java 接口类型
下一篇
Java 接口继承