Java学习笔记(抽象类与接口)

抽象类

  1. 抽象类不能被实例化
  2. 抽象类里包含抽象方法,也可以有非抽象方法。
  3. abstract 不能与final一同修饰一个类
  4. abstract 不能与final, static, private, native一同修斯一个方法

接口

  1. 接口中定义的成员变量自动默认为public static final,可以直接通过类名.变量名来调用
  2. 接口中的方法自动为public,因为接口必须要能被实现
  3. 接口中不存在有具体方法体的方法。
  4. 一个类要实现某接口,必须要实现这个接口中所有的方法。如果只实现了一部分方法,则这个类必须要声明为抽象类。

抽象类 vs 接口

  1. 语法层次比较
    抽象类是个类,遵循单继承的原则,而一个类可以实现多个接口。
  2. 设计层次理解
  • 抽象类理解为is-a的关系,接口理解为like-a的关系,实现的是有没有某个行为的关系。
  • 抽象类是多个子类向上抽象出来的,它们具有相同的特征,可以用一个基类来表示;而接口是行为上的抽象,是多个类具有相关的行为。比如:猫和狗向上可以抽象为动物的抽象类,猫和狗都是一个动物,它们有自己玩球的姿势。而机器人也会玩球(比如发条魔灵),那么可以统一抽象出一个接口玩儿个球,本质上动物和机器人属于不同的类别,但它们都有自己玩球的行为。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容