十一、接口


1.接口的概念
初期理解:可以认为接口是一种特殊的抽象类,特殊之处:如果一个抽象类中的方法全部是抽象方法,Java中将该类使用接口来表示
接口是抽象方法的集合

2.接口的使用
1>定义
语法:
类的定义:使用class关键字
访问权限修饰符 class 类名{
}
接口的定义:使用interface关键字
访问权限修饰符 interface 接口名{
}

思考:在同一个Java文件中,public修饰了一个类,还修饰了一个接口,Java文件名和类名保持一致,编译可以通过吗?
答案:接口在底层还是按照类来处理的,所以不管是类还是接口,在同一个Java文件中,被public修饰的最多只能有一个,而且java文件名必须和public修饰的保持一致

3.接口的使用【见代码InterfaceUsageDemo01】

//演示接口的使用
class InterfaceUsageDemo01 
{
    public static void main(String[] args) 
    {
        //2.接口类似于抽象类,不能实例化对象
        // 错误: SuperClass是抽象的; 无法实例化
        //SuperInter sc = new SuperInter();

        SubImp si = new SubImp();
        si.show1();
        si.show2();
        si.show3();
    }
}

//1.接口的定义
interface SuperInter
{
    //6.定义成员变量
    //默认是一个常量,修饰符是固定的:public static final
    int num = 10;
    
    //7.不能构造方法
    /*
    public SuperInter() {}
    public SuperInter(int num) {
        this.num = num;
    }
    */

    //5.接口中的方法默认都是抽象方法,默认修饰符是固定,是public abstract,在实现类中实现方法的时候,
    //为了满足重写的规则,修饰符一定是public
    void show1();
    abstract void show2();
    public void show3();
}

//3.如果一个类想要使用接口中的方法,使用实现完成,使用implements关键字表示
//把实现了接口的类称为实现类
class SubImp implements SuperInter
{
    //实现方法:仍然遵循重写规则
    //4.如果要保证实现类是一个普通类【可以实例化对象】,必须实现接口中的所有的抽象方法
    @Override
    public void show1() {

    }
    @Override
    public void show2() {

    }
    @Override
    public void show3() {

    }
}

4.接口的实现和类之间的关系
类与类之间的关系是继承关系,类与接口之间的关系是实现关系

如果一个类要使用另外一个类中的方法,则继承,使用extends关键字
如果一个类要使用一个接口中的方法,则实现,使用implements【实现了接口的类称为实现类】

注意事项:
a.实现类需要实现接口中的所有的抽象方法,才能实例化对象去调用方法,如果只实现了部分,则实现类是一个抽象类

b.一个类能同时实现多个接口【多实现】,多个接口之间使用逗号隔开【实现类中就必须实现所有接口中所有抽象方法】
c.一个类能在继承了一个类的同时,还可以实现接口,但是,必须继承在前,实现在后
d.接口和接口之间的关系是继承,而且是多继承【注意区分类的继承】


总结:
1>接口的特点
a.接口是对外暴露的规则
b.接口是对程序功能的扩展
c.接口可以用来多实现
d.类与接口之间是实现关系,而且类在继承其他类的同时可以实现多个接口
e.接口和接口之间的关系是继承,而且是多继承


2>类,接口之间的关系以及特点
a.类与类之间是继承,单继承
b.类与接口之间是实现,多实现
c.接口与接口之间是继承,多继承

3>接口和抽象类的区别
a.抽象类是用于继承,而且是单继承
接口是用于实现,而且是多实现
b.在抽象类中可以定义普通方法,可以直接提供给子类使用
接口中的方法全部是抽象方法

原文地址:https://www.cnblogs.com/lsp-lsp/p/7343925.html