abstract抽象类和interface接口的区别

版权声明:卢楷方的个人分享 https://blog.csdn.net/IT_lukaifang/article/details/82694079

抽象类的特点:

/**
 * abstract修饰的类
 * 类中 可以出现抽象方法(使用abstract关键字修饰,没有方法体)
 * 抽象方法不能私有
 * 抽象类 不能被实例化
 */

如果一个方法没有方法体,那么,该方法必须定义为抽象方法。
关健字:abstract。

  • A:类或者方法都必须用abstract修饰。
  • B:具体类在继承抽象类的时候
    要么:本身也是抽象类。
    要么:重写抽象类中的所有抽象方法。
  • C:抽象类不能实例化。要想使用,必须按照多态的方式。““`
  • D:成员特点
    • a:成员变量
      可以是变量,也可以是常量。
    • b:构造方法
      有构造方法,但是不能实例化。“““
    • 构造方法有什么用呢?
      用于子类访问父类数据的初始化。
    • c:成员方法
      可以有抽象方法,也可以有非抽象方法。

抽象类的好处:
A:强制要求子类必须实现某些功能。(抽象方法)
B:提高代码复用性。(非抽象方法)

接口的特点

/**
 * 1.关键字 interface
 * 2.特殊的抽象类(只能有抽象方法)
 * 3.属性:public static final  默认
 * 4.方法:只能是public abstract 默认
 * 5.构造方法:没有
 * 6.接口可以多继承,只能继承接口(接口间可以继承)
 */

- 1、接口里面的所有的量都是常量,

  • 2、和类的定义流程基本一致,

  • 3、所有的方法都是public abstract

  • 4、接口特性:

    • (1)接口不可以实例化

    • (2)实现类必须实现接口的所有方法(抽象类除外)

    • (3)实现类可以实现多个接口(java多继承)

    • (4)接口中的常量都是静态常量

二者的相同点

  • 都不能被实例化

二者的区别

类型 abstract class Interface
定义 abstract class关键字 Interface关键字
继承 抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 接口只可以继承接口(一个或多个);子类可以实现多个接口
访问修饰符 抽象方法可以有public、protected和default这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符
方法实现 可定义构造方法,可以有抽象方法和具体方法 接口完全是抽象的,没构造方法,且方法都是抽象的,不存在方法的实现
实现方式 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
作用 了把相同的东西提取出来,即重用 为了把程序模块进行固化的契约,是为了降低偶合

猜你喜欢

转载自blog.csdn.net/IT_lukaifang/article/details/82694079