Java复习-20-接口(1)

接口的定义及使用

如果相对外部隐藏全部的实现细节,就要通过接口来实现。

接口的定义

使用interface关键字来定义。由于接口描述的是一个公共的定义标准,所以在接口之中所有的抽象方法的访问权限都为public

interface IMessage{ // 为了区分接口,接口名称前要加大写字母 I
    public static final String INFO = "HelloWorld"; // 全局常量
    public abstract String getInfo(); // 抽象方法
}

接口的实现

  • 接口需要被子类是按(implements),一个子类可以实现多个父接口;
  • 子类(如果不是抽象类)那么一定要覆写接口之中的全部抽象方法;
  • 接口对象可以利用子类对象的向上转型进行实例化。
class MessageImpl implements IMessage {
    public String getInfo(){
        return "得到一个消息。";
    }
}

多接口实现

在java中的主要目的是:一个子类可以实现多个接口(多继承)

interface IMessage{ // 为了区分接口,接口名称前要加大写字母 I
    public static final String INFO = "HelloWorld"; // 全局常量
    public abstract String getInfo(); // 抽象方法
}
interface IChannel {
    public abstract boolean connect();
}
class MessageImpl implements IMessage,IChannel {
    public String getInfo(){
        return "得到一个消息。";
    }
    public boolean connect() {
        System.out.println("消息发送通道已建立。");
    }
}

接口与接口,接口与Object的关系

实现了两个接口的子类,其实例化对象,可以向上转型为两个接口对象。

接口的多继承

interface IService extends IMessage,IChannel {
    public String service();
}

实际开发

实际开发中,接口的使用有三种形式:

  • 进行标准设置
  • 表示一种操作的能力
  • 暴露远程方法视图,这个一般都在RPC分布式开发中使用。

接口定义加强

假如当接口下的子类都需要新增 某一个相同的方法时,此时若子类数量很多,会造成代码修改成本增大。
对于该种情况,正确的方式是:子类在不应该直接实现该接口,而是中级使用一个抽象类进行过渡,由此便可以在抽象类中定义这样一个相同的普通方法了。
Java复习-20-接口(1)_第1张图片

虽然在JDK的后续版本中支持了直接在接口中定义普通方法,甚至是static方法,但是其不应该作为接口的主要设计原则。
我们所写的代码中依然应该奉行:接口就是抽象方法的集合

使用接口定义标准

对于接口而言在开发之中最为重要的应用就是进行标准的制定
例如:电脑的USB口,就接收符合USB标准的输入,而不关心USB的外设是键盘、鼠标、打印机…

你可能感兴趣的:(编程语言与bug,java,开发语言)