Interface
接口是特殊的抽象類
接口更多是像一個標準,讓實現類去實現方法
接口中有靜態常量和抽象方法、默認方法(Java8之後可以有static和default方法)
- 靜態常量(默認修飾符public static final)
- 抽象方法(默認修飾符public abstract)
- 接口中除了抽象方法外還可以有static和default方法(java8之後)
- 接口中不能有構造方法、靜態代碼塊
抽象類裏如果只有靜態常量或抽象方法,就用接口替代,因爲接口解決了類的單繼承問題
類 - 接口 之間的關係
- 類-類 :單繼承
- 類-接口:多現實
- 接口-接口:多繼承
接口中的default方法
- 只有接口中的方法能被default修飾,表示該方法爲普通的方法
- 一個類實現了兩接口中都有default方法,需要重寫default方法
- 實現了接口和繼承了父類中都有相同的方法,則父類中的方法的訪問修飾符必須高於default,否則仍然需要重寫該方法
interface MyInterface1 {
default void m()
{
System.out.println("接口中的m1");
}
}
interface MyInterface2 {
default void m()
{
System.out.println("接口1中的m1");
}
}
abstract class MyAbClass
{
void m1() {
System.out.println("父類中的m1");
}
}
class t extends MyAbClass implements MyInterface1,MyInterface2{
public static void main(String[] args){
new t().m1();
}
@Override
public void m() {
//Todo
}
}