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);
}
}
接口和抽象类的不同之处

请给一些例子。
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方法。
以下是参考文献