1. 程式人生 > >Java入門之介面

Java入門之介面

1.介面的基本知識

1.介面的定義:Java介面是抽象方法的集合。 2.介面的基本語法: 訪問許可權控制符 interface 介面名 [extends 介面列表] { 常量; 抽象方法; 內部類; }

public interface IIMammal {
double PI =3.14;
 void eat();
 }

2.介面的特點

1.介面內只能包含抽象類,靜態常量(public static final),內部類。 2.介面內的抽象方法必須為public訪問許可權。 3.介面沒有構造方法,不能建立自己的物件,但是可以引用實現類的物件。 ##3.介面的繼承及特點 1.繼承:通過extends關鍵字可以使自定義的介面實現繼承。 2.特點:介面只能繼承父介面,不能繼承抽象類和普通類。 3.使用:介面彌補了Java單一繼承的缺點(Java中的類只能繼承一個父類),即介面可以繼承多個父介面,它們之間用英文逗號隔開。

  public interface IMammal extends List,Set{//介面可以繼承多個介面
      double PI =3.14;//介面中的屬性必為public static final型屬性(在不同包的static方法中呼叫,不能二次賦值)
      public abstract void eat();//jdk7以前介面只存在抽象方法,jdk8可以存在靜態方法,
      void move();//介面中的方法可以省略public abstract,但是隻為public型
}

4.介面的實現

1)類通過implements關鍵字實現介面,Java中的類只能是單繼承,但卻可以實現多個介面以彌補Java類單繼承的不足。 2)語法:訪問控制符 修飾符 class 類名 implements 介面1 [,介面2, ……] { 變數; 方法; }

注:在類中實現介面時,實現類中方法的名字、返回值型別、引數的個數及引數資料型別必須與介面中的對應的抽象方法完全一致。(重寫)

5.介面實現的特點

1.如果一個類實現了一個介面,但沒有實現介面中的所有抽象方法,那麼這個類必須是abstract類。 2.如果多個介面中定義了相同的抽象方法,則在實現類中只實現其中一個即可。

6.介面回撥

介面回撥描述的是一種現象:介面宣告的變數指向其實現類例項化的物件,那麼該介面變數就可以呼叫介面中的抽象方法。

7.介面實現類的特點

1)介面實現類可以直接使用介面中的常量。 2)介面實現類所實現的多個介面中有常量名相同的常量,則在實現類中不能直接使用,必須使用類名來確定到底呼叫哪個介面中的常量。

 public interface IIMammal {//父類介面
    double PI =3.14;
    void eat();
    }


 public interface IMammal{//抽象父類
    double PI = 4.35;
    public default void eat() {
	
    }
//2.介面中可以有static靜態方法
    public static void move() {//java8及以上版本的特性
	
    }
public  class  Whale implements IMammal,IIMammal {
    public void move() {

	    System.out.println("鯨魚用鰭游泳。。。");
    }
    public void eat() {
	//介面回撥是介面中的多型
	
    }
    public void mian() {
	
	    IMammal mammal=new Whale();
	    mammal.eat();//介面回撥
	    //實現類可以直接呼叫介面中的全域性常量
	    System.out.println(IMammal.PI);//當多個介面的實現類,多個介面中有變數名相同的變數,在實現類中呼叫介面常量時,需指明哪一個介面中的變數。
	
    }
}

8.java8後接口的語法變化

1)Java8以前版本中規定,介面中所定義的方法只能是抽象方法,從Java8開始,介面中可以新增一個或多個由default關鍵字修飾的非抽象方法,該方法又稱為擴充套件方法,該預設方法將由介面實現類建立的物件來呼叫。 2)同樣,從Java8開始,介面中可以新增一個或多個由static關鍵字修飾的非抽象方法,該方法將由介面或其實現類直接呼叫。