- 1、接口慨念
类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它指明了这些类里必须提供某些方法。 - 2、接口定义基本语法:
[修饰符]interface 接口名 [extends 父接口1,父接口2,...]
{
常量定义...
抽象方法...
}
3、接口定义
常量:接口定义中属性是常量,即使定义时不添加public static final
修饰符,系统也会自动加上。
方法:接口中的方法都是抽象方法,即使定义时不添加public abstract
修饰符,系统也会自动加上。4、 使用接口
一个类可以实现一个或多个接口,实现接口使用implements
关键字。Java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。
继承父类实现接口的语法为:
[修饰符] class 类名 extends 父类 implements 接口1, 接口2...
{
类的具体内容
//1、如果继承了抽象类,需要实现抽象方法;
//2、要实现接口中的抽象方法。
}
注释:如果要继承父类,继承父类必须在实现接口之前(也就是说:extends和implements关键字不可以调换顺序)
IPlayGame.java(接口文件)
package com.imooc;
public interface IPlayGame {
public void playGame(); //只定义方法,而不需要实现
}
Psp.java(接口实现文件)
创建一个类Psp.java,实现上面的接口:
package com.imooc;
public class Psp implements IPlayGame {
//选择实现接口文件,回自动实现接口文件的方法
@Override
public void playGame() {
System.out.println("Psp具有了玩游戏的功能");
}
}
SmartPhone.java(接口实现文件)
package com.imooc;
public class SmartPhone extends Telephone implements IPlayGame{
//继承的Telephone 类为抽象类,所以自动实现抽象类方法
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("通过语音打电话");
}
@Override
public void message() {
// TODO Auto-generated method stub
System.out.println("通过语音来发短信");
}
//实现IPlayGame接口,自动实现接口中的方法
@Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println("SmartPhone具有了玩游戏的功能");
}
}
Initail.java(应用文件)
IPlayGame pl1 = new SmartPhone();
pl1.playGame();
IPlayGame pl2 = new Psp();
pl2.playGame();
- 5.通过匿名内部类使用接口
接口在使用过程当中,还经常与匿名内部类配合使用
匿名内部类就是没有名字的内部类,多用来关注实现而不关注实现类的名称。
//方式一:
IPlayGame pl3 = new IPlayGame(){
@Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println("使用匿名类的方式实现接口");
}
};
pl3.playGame();
//方式二:
new IPlayGame(){
@Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println("使用匿名类的方式实现接口");
}
}.playGame();