吹静静

欢迎QQ交流:592590682

Java 接口

定义

 

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

接口的定义格式

[修饰符] interface 接口名 [extends 父接口1、父接口2。。。]

  0到多个常量;

  0到多个抽象方法的定义;

接口也可以继承接口,而且可以继承多个接口。

图文讲解

Telphone是一个抽象类,它里面定义了所属子类必须实现的方法,例如:打电话、发短信等等。

玩游戏是一个接口,里面定义了子类必须实现的方法,例如:玩游戏。

可以这么理解,抽象类就是一个不完整的普通类,而接口就是一个不完整的抽象类。

接口里面定义的方法就相当于各种标准,接口下的所有子类都必须遵守这些标准,乖乖的把这些方法重写一遍。

 

实例:

在这里父类和子类1并没有什么卵用,只是熟悉一下抽象类的写法和继承,主要看下面的接口。

父类/抽象类:

public abstract class Telphone { //abstract关键字定义抽象类
    private String name;
    public abstract void call(); //abstract关键字定义抽象方法,抽象方法不写方法体
    public abstract void message();

}

子类1:

public class CellPhone extends Telphone {

    @Override
    public void call() {//重写父类(抽象类)方法
        // TODO Auto-generated method stub
        System.out.println("通过键盘打电话");
    }

    @Override
    public void message() {
        // TODO Auto-generated method stub
        System.out.println("通过键盘发短信");
    }

}

接口:

接口命名的时候一般在名字前面加上一个 I 来表示这是一个接口,例如:IPlayGame

/*
 * 定义接口的时候,系统会自动给代码加上abstract关键字
 * 例如:public abstract interface IPlayGame{}
 * 
 * 定义接口里面的方法时,系统会自动给方法加上abstract关键字
 * 例如:public abstract void playGame();
 * 
 * 定义一个接口里面的常量时系统自动加上final关键词
 * 例如:public final String name = "PSP"; 
 */
public interface IPlayGame { //定义一个接口
    public String name = "PSP"; //定义常量时要用public限定符,或者默认限定符
    public void playGame();  // 定义接口里面的方法
}

子类2:

SmartPhone 类实现了 IPlayGame 这个接口。这个过程的名字叫做实现,用关键字 implements来实现。

子类既然实现了接口,就必须实现接口里面定义的方法。

public class SmartPhone extends Telphone implements IPlayGame{

    @Override
    public void call() { //重写父类(抽象类)方法
        // TODO Auto-generated method stub
        System.out.println("智能手机通过语音打电话");
    }

    @Override
    public void message() {
        // TODO Auto-generated method stub
        System.out.println("智能手机通过语音发短信");
    }

    @Override
    public void playGame() { //实现接口里面的方法
        // TODO Auto-generated method stub
        System.out.println("智能手机可以玩游戏");
    }

}

子类3:

这是一个典型的类实现接口的例子,并重写接口里面的方法。

public class Psp implements IPlayGame {

    @Override
    public void playGame() {
        // TODO Auto-generated method stub
        System.out.println("psp可以玩游戏");
    }
}

测试类:

引用类型是接口IPlayGame,实现类型是Psp()、SmartPhone()

public class Initail {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        IPlayGame t1 = new Psp();
        t1.playGame();
        
        IPlayGame t2 = new SmartPhone();
        t2.playGame();
    }
}

 运行结果:

psp可以玩游戏
智能手机可以玩游戏

 

posted on 2018-08-15 10:47  吹静静  阅读(183)  评论(0编辑  收藏  举报