接口
接口是功能的集合,接口只描述應該具備的方法而無具體實現方法。接口的具體實現是由接口的實現類完成的。
接口定義(interface)
public interface 接口名{
抽象方法1;
抽象方法2;
...
}
注意:
1. 接口中方法均爲公共訪問的抽象方法;
2. 接口中無法定義普通話成員變量;
接口實現類(implements)
接口實現類,實現接口功能的類,前提其是一個類(class);
定義格式:
class 類名 implements 接口名{
重寫接口中的所有方法
}
在實現接口後,該類會將接口中所有的抽象方法繼承過來,必須重寫所有方法完成具體邏輯,否者將成爲一個抽象類;
接口成員特點
- 接口中纔可以定義變量,但是需要固定修飾符**< public static final >** 接口中的成員變量雖然也稱之爲變量,但是是固定無法改變的;
注意:- 修飾符可以省略不寫也可以選擇性寫;
- 常量被靜態修飾,可以用類名直接調用,被接口名直接調用;
public interface Demo{ public static final int x = 1; public abstract void func1(); } public static void main(String[] args){ System.out.println(Demo.x); }
- 接口中可以定義方法,但是需要固定修飾符**< public abstract >**;
- 接口與抽象類一致,無法創建對象;
- 實現類必須覆蓋接口中所有的抽象方法後,纔可以實例化。
public interface Demo{
public static final int x = 1;
public abstract void func1();
}
class InterfaceImpl implements Demo{
public static void func1(){
System.out.println("implements");
}
}```
## 接口的多實現
由於實現類需要重現接口中的方法,而方法的實現是依靠實現類實現的,所以並不會產生類多繼承的錯誤;
注意:
* 應當避免多實現時,不同接口擁有相同函數名返回值類型不一樣的函數,此時無法重寫函數;
```java
public interface A{
public abstract void a();
}
public interface B{
public abstract int a();
}
// 接口多實現無法實現重寫
public class InterfaceImple A,B{
public static void a(){
System.out.println("implements");
}
}
接口間的多繼承
與類之間的繼承相似,接口與接口之間也可以產生繼承關係,多個接口之間可以使用(extends)進行jicheng
類繼承類的同時實現接口
子類可以通過繼承父類擴展功能,也可以通過接口的功能實現功能的拓展。
public interface A {
public abstract void a();
}
public interface B {
public abstract void b();
}
public abstract class C {
public abstract void c();
}
public class D extends C implements A, B{
public void a(){
}
public void b(){
}
public void c(){
}
}