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{
}
posted @ 2022-03-03 18:43  泥鱼生长  阅读(269)  评论(0编辑  收藏  举报