1.接口
    接口概述:
        接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。
        接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接          口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。

    接口的格式:

public interface 接口名 {
             抽象方法1;
             抽象方法2;
             抽象方法3;
         }


    接口的使用:
        类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,          实现使用implements
        其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类            仍然需要重写方法以实现具体的功能。
        
    

class 类 implements 接口 {
             重写接口中方法
         }


        在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。

    接口中成员的特点:
        1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。后面我们会讲解final关键字
        2、接口中可以定义方法,方法也有固定的修饰符,public abstract
        3、接口不可以创建对象。
        4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。

    接口的思想:
        集合体系中大量使用接口
                Collection接口
                        List接口
                               ArrayList实现类
                               LinkedList实现类
                Set接口

    接口优点:
        1.类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口,类与类之间是继承关系,java中的继承是单一继承,一个类只能有一个父类,打破了继承的局限性。
        2.对外提供规则(USB接口)
        3.降低了程序的耦合性(可以实现模块化开发,定义好规则,每个人实现自己的模块,提高了开发的效率)

    接口和抽象类的区别
        1.共性:
            不断的进行抽取,抽取出抽象的,没有具体实现的方法,都不能实例化(不能创建对象)
        2.区别1:与类的关系
            (1)类与接口是实现关系,而且是多实现,一个类可以实现多个接口,类与抽象类是继承关系,Java中的继承是单一继承,多层继承,一个类只能继承一个父类,但是可以有爷爷类
           区别2:成员
                a.成员变量
                    抽象类可以有成员变量,也可以有常量
                    接口只能有常量,默认修饰符public static final
                b.成员方法
                        抽象类可以有抽象方法,也可以有非抽象方法
                        接口只能有抽象方法,默认修饰符 public abstract
                c.构造方法
                        抽象类有构造方法,为子类提供
                        接口没有构造方法