Java的接口

来源:互联网 发布:weui js 编辑:程序博客网 时间:2024/06/08 11:15

Java 语言中的接口

  • 接口的概念

    • 接口可以理解为一种特殊的类,由全局常量公共抽象方法组成;
    • 通俗理解: 类是一种具体的实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,接口之规定这些类实现它的类里必须提供某些方法;
    • 也就是说,接口其实是一种规范,是用来约束类的。
  • 接口定义

[修饰符] interface  接口名 [extends 父接口1,父接口2...]{        零到多个**常量**...        零到多个抽象**方法**....}
- 常量:    - 接口中属性是常量,即使我们程序员自己定义时不显示的添加 final修饰符,编译器也会自自动添加;- 方法:    - 同上,接口中的方法也只能是抽象方法,即使我们通常不添加 abstract 修饰符,编译器也会自动添加;
  • 使用接口

    • 一个类是可以实现一个或者多个接口的,实现接口使用 implements 关键字。
    • Java中一个类只能继承一个父类,是不够灵活的,Java通过实现多个接口来解决这个问题;

    • 继承父类并实现接口的示例:

    public class SmartPhone extends Telphone implements IPlayGame{        类体部分...        //如果继承了抽象类,需要实现继承的抽象方法;        //也需要实现接口中的抽象方法(接口中的普通方法可以不实现)    }
  • 描述:
  • 代码示例
    • 定义接口IPlayGame
public interface IPlayGame {    public void playGame();//接口中的方法不需要实现}
  • 在SmartPhone类中实现接口IPlayGame
/** * Created by xiezhongtian on 2017/8/24. * SmartPhone类继承Telphone类并实现接口IPlayGame * 通过接口IPlayGame描述两个不同类型的类之间的特征(玩游戏) */public class SmartPhone extends Telphone implements IPlayGame{    @Override    public void call() {        System.out.println("智能机:可以使用种类繁多的APP打电话");    }    @Override    public void sendMessage() {        System.out.println("智能机:可以通过语音发短信");    }    @Override    public void playGame() {//实现接口中只能手机有玩游戏的特性        System.out.println("智能机:可以玩游戏");    }}
  • 在Psp类中实现接口IPlayGame
/** * Created by xiezhongtian on 2017/8/24. */public class Psp implements IPlayGame {    @Override    public void playGame() {//实现接口中玩游戏的特性        System.out.println("Psp:具有玩游戏的功能");    }}
  • 通过接口来使用两个不同类的方法
        //接口(Interface)        IPlayGame iPlayGame1 = new SmartPhone();//接口的引用指向了一个实现了接口的对象        IPlayGame iPlayGame2 = new Psp();        iPlayGame1.playGame();        iPlayGame2.playGame();
  • 输出 两个不同类型对象的共同特性
智能机:具有玩游戏的功能Psp:具有玩游戏的功能

匿名内部类的方式实现接口

- 接口在使用的过程中,还经常和匿名内部类配合使用- 所谓匿名内部类,就是指没有名字的内部类- 多用于关注实现而不关注实现类的名称场景中
  • 语法格式
        /*        * 匿名内部类实现接口的语法格式:        * interface i = new interface(){        *   public void method(){        *       System.out.println("匿名内部类实现接口的方式!!");        *   }        * }        *        * */        //1.常规方法        IPlayGame iPlayGame3 = new IPlayGame(){            @Override            public void playGame() {                System.out.println("[匿名内部类]:使用匿名内部类的方式实现接口!!");            }        };        iPlayGame3.playGame();        //2.直接new接口的方式        new IPlayGame(){            @Override            public void playGame() {                System.out.println("[直接New]:使用匿名内部类的方式实现接口!!");            }        }.playGame();    }

输出:

[匿名内部类]:使用匿名内部类的方式实现接口!![直接New]:使用匿名内部类的方式实现接口!!
原创粉丝点击