1. 程式人生 > 其它 >interface介面的使用簡述(一)

interface介面的使用簡述(一)

1、介面使用interface關鍵字描述定義

2、Java中,介面和類是並列的結構

3、如何定義介面:定義介面中的成員

  3.1 JDK7及以前:只能定義全域性常量和抽象方法

    》全域性常量:public static final的,但是書寫時可以省略;

    》抽象方法:public abstract的

  3.2 JDK8:除了定義全域性常量和抽象方法之外,還可以定義靜態方法、預設方法。

4、介面中不能定義構造器:意味著介面不可以例項化

5、java開發中,通過類來實現(implements)介面使用:如果實現類覆蓋了介面中的所有抽象方法,則此實現類就可以例項化;如果沒有覆蓋所有抽象方法,則此實現類仍為一個抽象類

6、java類可以實現多個介面 ----多實現彌補了java單繼承性的侷限性,格式:class A extends B implements C,D,E

7、介面與介面之間可以繼承,並且可以多繼承

8、介面具體的使用,體現多型性:見示例程式碼

9、介面,實際上可以看作是一種規範

補充-面試題:抽象類與介面有哪些異同?

//面試題1:當子類繼承了同名的父類成員和介面成員時,如何區分使用

interface A{

  int x=0;

}

class B{

  int x =1;

}

class C extends B implements A{

  public void pX() {

    // System.out.println(x);//編譯不通過,提示錯誤,x模糊

    System.out.println(super.x);//1

    System.out.println(A.x);//0

}

  public static void main(String[] args) {

    new C().pX();

  }

}

//面試題2

interface Playable{

  void play();

}

interface Bounceable{

  void play();

}

interface Rollable extends Playable,Bounceable{

  Ball ball = new Ball("pingpang");

}

class Ball implements Rollable{

  private String name;

  public String getName() {

    return this.name;

  }

  public Ball(String name){

    this.name = name;

  }

  public void play() {//重寫了兩個父介面中的play方法

    // ball = new Ball("football"); 介面中定義了全域性常量ball,不可以更改。

    // System.out.println(ball.getName());

  }

}

  

public class InterfaceTest1 {

  public static void main(String[] args) {

    System.out.println(Flyable.MAX_SPEED);

    System.out.println(Flyable.MIN_SPEED);

    Plane p1 = new Plane();

    p1.fly();

    System.out.println(Plane.MAX_SPEED);

  }

}

interface Attackable{

  void attack();

}
interface Flyable{   //全域性常量   public static final int MAX_SPEED = 7900;//第一宇宙速度   int MIN_SPEED=1;//省略了public static final   //抽象方法   public abstract void fly();   void stop();//省略了public abstract } class Plane extends Object implements Flyable{
  @Override   
public void fly() {     System.out.println("通過引擎起飛");   }   @Override   public void stop() {     System.out.println("通過駕駛員停止");   } } // 抽象類實現介面 abstract class Kite implements Flyable{   @Override   public void fly() {   } } //類Bullet實現多個介面 class Bullet implements Flyable,Attackable,CC{   @Override   public void attack() {   }   @Override   public void fly() {   }   @Override   public void stop() {   }   @Override   public void method1() {   }   @Override   public void method2() {   } } interface AA{   void method1(); } interface BB{   void method2(); } //介面可以繼承,並可以繼承多個 interface CC extends AA,BB{
}