每日重温Java核心基础之--面向对象编程中的接口

一、什么是接口

接口是抽象方法的集合,通常用interface关键字声明。一个类通过实现接口的方式,从而继承接口的抽象方法。接口主要用于定义一组规范,规定实现接口的类必须遵循的契约。

二、接口的语法

interface 名称 [extends 其他的接口名] {
    // 声明变量
    // 抽象方法
    int getMoney();
}

例如:

interface IPay {
    int getMoney();
}

三、接口的特点

  • 方法都是抽象方法:接口中的方法默认都是public abstract,其他修饰符都会报错。例如:

    // public abstract int getMoney(); // 正确,这是默认的修饰符
    // private int getMoney(); // 错误,不能用private修饰

  • 可以含有变量:接口中的变量会被隐式的指定为public static final。例如:

    interface IPay {
        int MONEY = 100; // 相当于 public static final int MONEY = 100;
    }

  • 无法被实例化:接口不能被实例化,需要被实现才行。例如:

    // IPay pay = new IPay(); // 错误,接口不能被实例化

  • 实现接口的类必须实现所有方法:一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。例如:

    interface IPay {
        void pay();
    }
    class Alipay implements IPay {
        @Override
        public void pay() {
            System.out.println("支付宝支付");
        }
    }
    // 如果Alipay类不实现pay方法,则Alipay类也必须是抽象类

    四、接口和类的区别

  • 继承和实现:一个类只能继承一个类,但是能实现多个接口。接口能继承另一个接口,接口的继承使用extends关键字,和类继承一样。例如:

    class Animal {} // 一个类
    class Dog extends Animal {} // 类继承
    
    interface IPay {} // 一个接口
    interface IOnlinePay extends IPay {} // 接口继承
    class Alipay implements IPay, IOnlinePay {} // 类实现多个接口

    构造函数:接口没有构造函数,而类可以有构造函数。例如:

    class Animal {
        public Animal() {
            // 构造函数
        }
    }
    // 接口IPay没有构造函数
    interface IPay {}

    五、JDK8新特性

  • static方法:接口中可以有static方法,但必须有方法实现体,该方法只属于该接口,接口名直接调用该方法。例如:

    interface IPay {
        static void staticMethod() {
            System.out.println("接口中的静态方法");
        }
    }
    // 调用静态方法
    IPay.staticMethod();

  • default方法:接口中新增default关键字修饰的方法,default方法只能定义在接口中,可以在子类或子接口中被重写。default定义的方法必须有方法体。例如:

    interface IPay {
        default void defaultMethod() {
            System.out.println("接口中的默认方法");
        }
    }
    class Alipay implements IPay {
        @Override
        public void defaultMethod() {
            System.out.println("支付宝的默认方法");
        }
    }
    // 调用默认方法
    new Alipay().defaultMethod(); // 输出 "支付宝的默认方法"

    六、接口的实现

    当类实现接口的时候,类要实现接口中所有的方法,不然类必须声明为抽象的类,使用implements关键字实现所有接口。例如:

    class 类名 implements 接口名称[, 其他接口名称, 其他接口名称] {
        // 要实现的方法
    }

    例如:

    class Alipay implements IPay {
        @Override
        public void pay() {
            System.out.println("支付宝支付");
        }
    }

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