1-12接口

接口的概述

电脑上面的主板有很多接口,比如内存条的接口,有了这个接口,可以插入多个内存条,主板和内存条可能不是同一家生产厂商,但是两种物体却能结合到一起,正是因为这个接口的存在。只要厂家遵循这个接口,主板和内存条就可以随意更换,提高了可插拔性,接口其实也是体现着一种规范。
在java语言里面使用interface来声明一个接口,接口其实是一个特殊的抽象类,在接口里面的方法全部都是抽象的。
关于接口,有几个需要注意的地方:

接口中只能出现常量和抽象方法
接口里面没有构造方法,无法创建接口的对象
接口和接口之间支持多继承,即一个接口可以有多个父接口
一个类可以实现多个接口,即一个类可以有多个父接口
一个类如果实现了接口,那么这个类需要重写接口中所有的抽象方法(建议),如果不重写则这个类需要声明为抽象类(不建议)

public interface A{

    //常量(必须用public static final修饰)
    public static final double PI = 3.14;

    //public static final是可以省略的.
    //double PI = 3.14;


    //抽象方法(接口中所有的抽象方法都是public abstract)
    public abstract void m1();

    //public abstract是可以省略的.
    void m2();

}

interface B{
    void m1();
}

interface C{
    void m2();
}

interface D{
    void m3();
}

interface E extends B,C,D{
    void m4();
}

//implements是实现的意思,是一个关键字.
//implements和extends意义相同。
class MyClass implements B,C{
    public void m1(){}
    public void m2(){}
}

接口的作用

可以使项目分层,都面向接口开发,提高开发效率
降低了代码之间的耦合度,提高了代码的可插拔性
开发中尽量使用接口,少用抽象类,一个类可以实现多个接口,却只能继承一个父类

将之前的james开汽车的例子修改一下

将Car定义为接口

interface Car {
    public void run();
}

创建Benz和BMW类去实现这个接口

class Benz implements Car {
    public void run(){
        System.out.println("奔驰汽车在跑");
    }
}

class BMW implements Car {
    public void run(){
        System.out.println("宝马汽车在跑");
    }
}

Person类不变

class Person {
    public void drive(Car c){
        c.run();
    }
}

测试类不变

public class Test01 {
    public static void main(String[] args) {
        Person james = new Person();
        Benz bc = new Benz();
        //james.drive(bc);
        //BMW bm = new BMW();
        james.drive(bc);
    }
}
原文地址:https://www.cnblogs.com/superfly123/p/10443791.html