美文网首页Java基础
08 抽象类与接口

08 抽象类与接口

作者: acc8226 | 来源:发表于2017-01-25 13:00 被阅读6次

    抽象类

    抽象类代表了一种优化了的概念组织方式,来描述事物的一般状态和行为,然后在子类中去实现这些状态和行为,以适应对象的多样性.

    抽象类声明和实现

    在Java中抽象类和抽象方法的修饰符是abstract, 注意抽象方法中只有方法的声明,没有方法的实现

    • 抽象类不能被实例化,只有具体类才能被实例化。
    • 抽象类中是有默认的构造函数, 只供子类实例化调用。
    • 抽象类中可以包含具体方法和抽象方法
    abstract class 类名称{           
        member var;  
        method(){…}       //一般方法
        abstract method();  //抽象方法, 抽象方法在后直接跟分号          
      }
    

    普通类加上abstract关键字就变成了抽象类,没有任何条件限制.但是有抽象方法的类必须定义为抽象类,否则会提示**The type XXX must be an abstract class to define abstract methods **
      
    Q: 抽象关键字abstract不可以和哪些关键字共存?     
    A: private 私有内容子类继承不到,所以,不能重写. 但是,abstract修饰的方法,要求被重写。两者冲突。
    final final修饰的方法不能被重写。而abstract修饰的方法,要求被重写。两者冲突。
    static 假如一个抽象方法能通过static修饰,那么这个方法,就可以直接通过类名调用。而抽象方法是没有方法体的,这样的调用无意义。所以,不能用static修饰。

    接口

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

    提示 Java 8之后接口中新增加了默认方法,因此“接口中所有的方法都是抽象的”这个提法在Java 8之后是有待商榷。

    • Java中不支持多继承,而是通过接口实现比多重继承更强的功能,java通过接口可以使出于不同层次,甚至不相关的类具有相同的行为.
    • 接口可以认为是特殊的抽象类, 不能用于直接创建对象.接口的作用在于规定一些功能框架,具体功能的实现则通过该接口约束的类完成.

    接口的定义:由常量和抽象方法组成

    [public] interface 接口名 [extends 父接口名列表 ]  {                 
        [public] [static] [final] 域类型 域名 = 常量值 ;                 
        [public] [abstract] 返回值 方法名(参数列表) [throw 异常列表];           
     }
    
    1. 声明接口可给出访问控制符;
    2. 一个接口还可以继承多个父接口,父接口间用逗号分隔。
    3. 系统默认接口中所有属性的修饰都是public static final,毕老师说的全局常量.
    4. 系统默认接口中所有方法的修饰都是public abstract;即抽象方法.

    接口的实现

    • 定义了一套行为规范,一个类实现这个接口就是要遵守接口的定义规范,要实现接口中定义的所有方法.
    • 一个类可以实现多个接口。接口间用逗号分隔;
    • 如果实现某接口的类不是抽象类,则在类的定义部分必须实现指定接口的所有抽象方法;否则编译时会指示该类只能为抽象类是不能创建对象的.
    • 接口的抽象方法的访问限制符默认为public

    Java 8新特性默认方法和静态方法

    Java 8在接口中提供了声明默认方法和静态方法的能力。接口示例代码如下:

    相关文章

      网友评论

        本文标题:08 抽象类与接口

        本文链接:https://www.haomeiwen.com/subject/skbtittx.html