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可以玩游戏
智能手机可以玩游戏