# 抽象类 & 接口

注意:包含抽象方法的类必须声明为抽象类。但是抽象类可以不包含抽象方法。

# 不同点

1. 声明抽象类用关键字 abstract接口 interface

2. 数据域抽象类对变量没有限制接口所有变量必须是 public static final

3. 方法抽象类的方法没有限制接口的方法必须是 public abstract 的实例方法(从 Java 8 开始,接口方法可以由默认实现,从 Java 9 开始,接口内允许定义私有方法。)

4. 构造方法抽象类包含构造方法,子类通过构造方法链调用构造方法接口不包含构造方法

5. 继承抽象类是单重继承,用 extends接口可以被多个类继承,也可以作为子接口继承多个接口,用 implements。

# 相同点

理解了上面的不同点,相同点更好找啦。

  • 可以从上面的不同点看出,都不能被实例化。
  • 都位于继承顶端,都被实现或继承。
  • 都包含抽象方法。(抽象类则可以同时包含抽象和非抽象的方法,接口中所有的方法隐含都是抽象的,public abstrat)

# 理解:

类是对事物的抽象,抽象类是对类的抽象,接口是对抽象类的抽象。

Java 中最基本的单位是类,面向对象提出万物皆对象,OOP 是面向对象的编程思想,OOP 引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。从这一方面去看接口和抽象类:

抽象类自下而上 -> 先有一堆实现的子类,然后抽象出公共的方法和属性,优化代码结构,省略重复方法。

接 口自上而下 -> 定义好具体约束,规范子类进行实现;

更新于

请我喝[茶]~( ̄▽ ̄)~*

Jean 微信支付

微信支付

Jean 支付宝

支付宝

Jean 贝宝

贝宝