Java 接口 interface關鍵字


1.概念:一種特殊的類,有全局常量和公共方法組成

 定義接口用interface關鍵字

2.語法:            //中括號“[ ]”的含義:你可繼承父接口,也可不繼承,是可選的

[修飾符] (abstract) interface 接口名[extends 父接口1,父接口2...]  //接口可繼承多個父接口(即:接口是多繼承的);abstract若沒寫,系統會自動加上

{

0個到多個常量定義...

0個到多個抽象方法的定義...

}

接口就是用來被繼承,被實現的,修飾符一般建議用public

注意:不能使用private和protected修飾接口

3.接口定義:

常量:接口中的屬性是常量,即使定義時不添加public static final修飾符,系統也會自動加上。

方法:接口的方法只能是抽象方法,總是使用,即使定義時不添加public abstract修飾符,系統也會自動加上。

4.一個類可以實現一個或多個接口,實現接口使用implement關鍵字,Java中一個類能繼承一個父類,是不夠靈活的,可通過實現多個接口來補充

 

繼承父類實現接口的語法為:

[修飾符] class 類名 extends 父類 implement 接口1,接口2...

{

類體部份  //如果繼承了抽象類,需要實現繼承的抽象方法;如果遵守了一個接口,就要實現接口中的抽象方法

}

如果要繼承父類,繼承父類必須在實現接口之前

例:

abstract class Telphone{    //此父類只是用來約束子類,所以可以定義成抽象類

public abstract void call();    //在抽象類里若想要約束子類,就可定義為抽象方法       抽象方法沒有方法體以分號結束

public abstract void message();

}

class Cellphone extends Telphone{

   public void call(){        //實現抽象類里要求的方法call

    System.out.println("通過鍵盤來打電話");

  }

   public void message(){    //實現抽象類里要求的方法message

    System.out.println("通過鍵盤來發短信");

  }

}

class Smartphone extends Telphone{

  public void call(){

    System.out.println("通過語音來打電話");

  }

  public void message(){

    System.out.println("通過語音來發短信");

  }

}

 

class Ex17{

  public static void main(String[] args){

    Telphone tel1=new Cellphone();    //抽象類的父類引用指向一個子類對象,先創建一個普通的電話的對象

    tel1.call();    //通過引用就可以打電話

    tel1.message();  //通過引用就可以發短信

    Telphone tel2=new Smartphone();  //通過父類的引用指向智能手機的對象

    tel2.call();

    tel2.message();

  }

}

 

interface IplayGame{

public void PlayGame();

}

abstract class Telphone{    //此父類只是用來約束子類,所以可以定義成抽象類

public abstract void call();    //在抽象類里若想要約束子類,就可定義為抽象方法       抽象方法沒有方法體以分號結束

public abstract void message();

}

class Cellphone extends Telphone implements IplayGame{

  public void call(){        //實現抽象類里要求的方法call

    System.out.println("通過鍵盤來打電話");

  }

  public void message(){    //實現抽象類里要求的方法message

    System.out.println("通過鍵盤來發短信");

  }

}

class Smartphone extends Telphone{

  public void call(){

    System.out.println("通過語音來打電話");

  }

  public void message(){

    System.out.println("通過語音來發短信");

  }

  public void PlayGame(){

    System.out.println("具有玩游戲的功能");

  }

}

class psp implements IplayGame{      //不能繼承phone抽象類,但psp有游戲的特性,所以要遵守IplayGame接口

  public void PlayGame(){

    System.out.println("具有玩游戲的功能");

  }

}

class Ex17{

  public static void main(String[] args){

    Telphone tel1=new Cellphone();    //抽象類的父類引用指向一個子類對象,先創建一個普通的電話的對象

    tel1.call();    //通過引用就可以打電話

    tel1.message();  //通過引用就可以發短信實現了接口的對象

    Telphone tel2=new Smartphone();  //通過父類的引用指向智能手機的對象

    tel2.call();

    tel2.message();

 

    IplayGame ip1=new Smartphone();      //ip1接口引用指向一個實現了接口的對象

    ip1.PlayGame();

    IplayGame ip2=new psp();

    ip2.PlayGame();

 

IplayGame ip3=new IplayGame();{  //new一個接口的代碼                輸出:通過鍵盤來打電話          或者:new IplayGame(){

    public void PlayGame(){                                 通過鍵盤來發短信             public void PlayGame(){   

      System.out.println("使用匿名內部類的方式實現接口");         通過語音來打電話              System.out.println("使用匿名內部類的方式實現接口");

  }                                   通過語音來發短信              }

};                                      具有玩游戲的功能               }

ip3.PlayGame();                              具有玩游戲的功能

}                                      使用匿名內部類的方式實現接口

}

 

使用接口:

接口在使用過程中,還經常與匿名內部類配合使用

匿名內部類:沒有名字的內部類,多用於關注實現而不關注實現類的名稱

例://直接new一個接口,直接在接口里實現這個代碼

interfacce i=new interface(){

public void method(){

System.out.println("匿名內部類實現接口的方式");

}

};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM