一:概念
接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
接口是抽象方法和常量的定義的集合。
從本質上講接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現。
接口並不是類,編寫接口的方式和類很相似,但是它們屬於不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。
接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。
二:接口的聲明
格式如下:
[可見度] interface 接口名稱 [extends 其他的接口名] {
// 聲明變量
// 抽象方法
}
三:接口的特點
- 用interface來定義
- 接口中的所有成員變量默認都是由 public static final修飾的。
- 接口中的所有方法默認都是由 public abstract修飾的。
- 接口沒有構造器。
- 接口采用多層繼承機制。
- 接口也可以繼承其它接口。
四:接口應用實例
Cooking.java 接口
/*
* 廚藝接口
*
*/
public interface Cooking {
void fry(); // 炒菜
}
Singing.java 接口
/*
* 唱歌的接口
*/
public interface Singing {
void singing(); // 唱法
}
Person.java 抽象類
public abstract class Person
// 抽象類
{
int age;
String name;
String sex;
// 抽象方法
public abstract void ShowInfo();
}
SCTeacher.java
/*
* 描述會唱歌的廚子是一個老師的類
*/
//當類實現接口的時候,類要實現接口中所有的方法。否則,類必須聲明為抽象的類。
//類使用implements關鍵字實現接口。在類聲明中,Implements關鍵字放在class聲明后面。
public class SCTeacher extends Person implements Cooking, Singing
{
String course; // 老師教的科目
public void setInfo()
// 設置屬性
{
super.name = "張三";
super.age = 18;
super.sex = "男";
this.course = "計算機科學與技術";
}
@Override
public void singing()
// singing接口的方法重寫
{
System.out.println(super.name + "老師擅長美聲唱法");
}
@Override
public void fry()
// cooking接口的方法重寫
{
System.out.println(super.name + "老師是拿手的廚藝是做小龍蝦!");
}
@Override
public void ShowInfo() {
System.out.println("會唱歌的廚子老師的信息是:");
System.out.println(super.name);
System.out.println(super.age);
System.out.println(super.sex);
System.out.println(this.course); // 本類屬性用this
}
}
T1_interface.java 實例化
public class T1_interface {
public static void main(String[] args) {
SCTeacher tea = new SCTeacher(); // 實例化老師類
tea.setInfo(); // 設置老師信息
tea.ShowInfo(); // 打印老師信息
System.out.println("觀看接口的方法實現:");
tea.fry();
tea.singing();
}
}
運行結果:
會唱歌的廚子老師的信息是:
張三
18
男
計算機科學與技術
觀看接口的方法實現:
張三老師是拿手的廚藝是做小龍蝦!
張三老師擅長美聲唱法
五:總結
-
如果實現接口的類中沒有實現接口中的全部方法,必須將此類定義為抽象
-
抽象類是對於一類事物的高度抽象,其中既有屬性也有方法。接口是對方法的抽象,也就對一系列動作的抽象。
-
當需要對一類實物抽象的時候,也應該是使用抽象類,好形成一個父類。 當需要對一系列的動作抽象,就是用接口,需要使用這些動作的類去實現想要的接口即可。
-
當類實現接口的時候,類要實現接口中所有的方法。否則,類必須聲明為抽象的類。類使用implements關鍵字實現接口。在類聲明中,Implements關鍵字放在class聲明后面。
