JAVA从小白到大牛(14)--------抽象类与接口

    xiaoxiao2021-04-15  249

    14.1 抽象类 

    面向接口的编程

    接口和抽象类其实是给框架设计者使用的

    14.1.1 抽象类概念

     

    有抽象方法的类必须是抽象类 abstrac

    抽象方法没有 {} ,因为没有具体实现内容

     

    在一个抽象类中,也可以没有抽象方法 (0~n)

     

    抽象类中也可以有具体方法, 具体方法也可以调用抽象方法

     

    抽象类不能实例化 !!!

    可以当作一种类型,实例化它的子类,但是抽象类本身不能实例化

     

    14.1.2 抽象类声明和实现

     

    抽象类的子类要求 子类必须实现抽象方法

     

    抽象类中可以有实例变量

     

     

     

    14.2 使用接口

    14.2.1 接口概念

    接口比抽象类更抽象,接口中的所有方法都是抽象的

    接口中不能有非静态的变量,

     

     

     

     

    14.2.2 接口声明和实现

    抽象类的子类要求 子类必须实现抽象方法

     

     

    一个类实现多个接口

     

     

    接口和抽象类一样,不能实例化

     

    接口 中可以定义成员变量,但是只能是 public final static

     

    14.2.3 接口与多继承

    JAVA是单继承,只能有一个父类, 但可以实现多个接口,通过这种方式实现C++中的多继承

    C++ 中,如果A,B两个父类,都有 methodB()方法,继承都就会发生冲突,

    JAVA的接口机制避免了这种冲突,因为A,B接口里的方法,在子类里都需要overRide

     

    14.2.4 接口继承

    接口也可以继承接口,

     

     

     

     

    14.2.5 Java8 新特性默认方法和静态方法

     

    Java8之后 可以在接口中定义 默认方法和静态方法

    默认方法 相当于Swift 和OC中的可选方法,可覆盖???

     

    静态方法不能通过 实现类 来调用,必须通过 接口名 来调用

    静态方法与具体实现类无关,只能通过接口调用

     

     

     

     

    14.3 抽象类与接口区别

    构造方法的作用 就是初始化实例成员变量

     

                                            接口

    抽象类多继承支持多继承(包括普通类)只能继承一个父类成员变量

    不能有实例成员变量,

    声明的成员变量全是静态常量(public static final)

    与普通类一样,各种形式的成员变量都可以声明构造方法不含构造方法,由于没有实例成员变量可以有实例成员变量,也需要构造方法具体方法

    Java8之前,只有抽象方法

    Java8之后,也可以声明具体方法,具体方法通过声明默认方法实现

    可声明抽象方法和具体方法

     


    最新回复(0)