Java的接口 (Java de jiēkǒu)

界面是一个术语。

Java可以创建类和接口。
接口是为了实现特定功能而需要定义方法签名(名称、参数和返回值类型)的方式,而不包含具体的实现。
接口只能定义常量和抽象方法。
基本的定义方式是使用interface关键字。

interface インターフェイス名 {
    型 メンバ変数;     
    戻り値 メソッド名(引数1, 引数2, ...);
}

在编译时,接口中定义的变量和方法被视为公共的,成员变量会自动被添加上public static final修饰符,从而转换为常量。此外,方法会自动被添加上public abstract修饰符,变成抽象方法。

interface Englishable{
      // ↓ public static finalが付与される
   String LANG = "英語"
       // ↓ public abstractが付与される
      void displayENG();

基本书写方式与类别一样,但使用interface关键字,因此在编译时成员变量将变为常量(由于是常量,所以名称必须全部大写)。方法也在编译时成为抽象方法。

通过继承类,可以继承并使用其功能,而通过实现接口,也可以继承其功能。在继承类的功能时,我们使用“继承”这个词,但在继承接口的功能时,我们使用“实现”这个词。

由于包含了抽象方法,所以无法从接口中创建实例,但实现了该接口的类可以定义所有方法的处理。

要实现接口,需要使用implements关键字。

// class クラス名 implements インターフェイス名
class Student implements Englishable{
  String name;
        :
  void displayEng(){
     System.out.println("Name:" + name);
  }
}

接口和抽象类的不同之处

スクリーンショット 2022-11-08 21.33.50.png

请给一些例子。

public class StuSample7{
  public static void main(String[] args){
    Student7 stu = new Student7("Mike");
    stu.displayEng();
    
    Baseball bb = new Baseball();
    bb.displayEng();
  }
}
public interface Englishable{
  String LANGUAGE = "[英語]";
  void displayEng();
}
public class Student7 implements Englishable{
  private String name;

  public Student7(String name){
    this.name = name;
  }
  public void display(){
    System.out.println("名前:" + name);
  }
  public void displayEng(){
    System.out.println(Englishable.LANGUAGE);
    System.out.println("Name:" + name);
  }
}
public class Baseball implements Englishable{
  public void display(){
    System.out.println("キャッチボール");
    System.out.println("シートノック");
    System.out.println("バッティング");
  }
  public void displayEng(){
    System.out.println(Englishable.LANGUAGE);
    System.out.println("catch ball");
    System.out.println("seat knock");
    System.out.println("batting practice");
  }
}
[英語]
Name:Mike
[英語]
catch ball
seat knock
batting practice

在Englishable接口中定义了常量LANGUAGE和抽象方法displayEng。(由于interface关键字,它们被自动视为final常量和abstract抽象方法)
实现了displayEng方法的类是Student7类和Baseball类。

由于Student7类在定义时实现了Englishable接口,因此必须实现displayEng方法的内容(处理),该方法位于Englishable接口中。在displayEng方法的第11行中,使用System.out.println(Englishable.LANGUAGE),所以会输出包含英文字符串”[英語]”的常量LANGUAGE。Baseball类也实现了类似的处理。

在实行类中,调用了Student7类的构造函数和displayEng方法,生成了Baseball类的对象并调用了displayEng方法。

以下是参考文献

 

广告
将在 10 秒后关闭
bannerAds