Java——接口

一、介绍

  • 接口是Java语言中的一种引用类型(其他的引用类型有数组、类、String、集合...)
  • 接口,和类属于同一级别
  • 接口,可以理解为是方法的集合体(接口中通常就是用来定义方法的)
  • 接口中封装的就是抽象方法(JDK1.7之前)
  • 从JDK1.8开始,接口中增加了:静态方法、默认方法
  • 从JDK1.9开始,接口中增加了:私有方法
  • 接口,不能实例化(不能创建对象)[接口中没有构造方法]

二、接口的定义

使用关键字interface关键字来定义接口

格式为: interface 接口名{...}

public interface Test {
    // 接口中的成员
}

三、接口中的成员

JDK1.8之前只能定义静态常量和抽象方法

public interface Test {
    // 静态常量
    public static final int NUMBER = 100;   // 常量名通常全大写
    
    // 抽象方法
    public abstract void method();
}

JDK1.8添加了静态方法、默认方法

// 接口的命名方式:大驼峰
public interface Test {
    // 静态常量
    // ...

    // 抽象方法
    //...

    //默认方法
    public default int addNum(int n){
        return n + 1;
    }

    // 静态方法
    public static void method(){
        
    }
}

JDK1.9添加了私有方法

// 接口的命名方式:大驼峰
public interface Test {
    // 静态常量
    // ...

    // 抽象方法
    // ...

    //默认方法
    // ...

    // 静态方法
    // ...
    
    //私有方法
    private boolean isOpen(){
        return false;
    }
}

小结一下,接口中可以书写的内容

  1. 静态常量
  2. 抽象方法
  3. 静态方法
  4. 默认方法
  5. 私有方法

四、接口的基本使用

在Java语言中接口不能实例化,需要定义一个子类来实现(继承)接口,通过实例化子类对象,来访问接口的成员。

子类实现接口,使用关键字:implements

在子类实现接口之后,必须对接口中的抽象方法进行重写

举例如下

// Hello.java 定义接口
public interface Hello {
    // 静态常量
    public static final int NUMBER = 100;

    // 抽象方法
    public abstract void method(int num);
}

// Child.java 子类实现接口
public class Child implements Hello {
    // 重写抽象方法
    @Override
    public void method(int num){
        // 方法体代码
        System.out.println(num);
    }
}

// Test.java 测试类调用方法
public class Test {
    public static void main(String[] args) {
        // 实例化子类对象
        Child child = new Child();   // 使用对象本身类型来定义
        child.method(100);   // 调用重写后的方法 打印100

        // 多态的体现
        Hello h = new Child();   // 使用对象的父类型来定义
        h.method(200);   // 调用重写后的方法 打印200
    }
}

调用接口中默认方法的例子如下

// Hello.java
public interface Hello {
    // 默认方法
    public default void show(){
        System.out.println("我是接口中的默认方法");
    }
}

// Child.java 子类实现接口
public class Child implements Hello {
    
}

// Test.java
public class Test {
    public static void main(String[] args) {
        Child child = new Child();
        child.show();   // 我是接口中的默认方法
    }
}

获取接口中常量的例子如下

// Hello.java
public interface Hello {
    // 静态常量
    public static final String CITY = "合肥";
}

// Test.java
public class Test {
    public static void main(String[] args) {
        Child child = new Child();
        System.out.println(Hello.CITY);   // 合肥
    }
}

  

posted @ 2021-05-12 14:18  徐林俊  阅读(77)  评论(0编辑  收藏  举报