Java:抽象类与接口

程序设计中的抽象

  • 表达一种概念而非实体
  • 在一定程度上忽略细节而着眼大局(设计父类)

抽象类

  • 使用关键字abstract修饰
  • 抽象类的作用仅仅是表达接口,而不是具体的实现细节
  • 抽象类无法制造出对象,但可以定义变量,存放非抽象子类的对象

    抽象方法
    • 抽象类中可以存在抽象方法。抽象方法也是使用abstract关键字来修饰
    • 抽象的方法是不完全的,它只是一个方法签名而完全没有方法体
    • 存在抽象方法的类即成为抽象类
  • 他的子类必须重写所有抽象方法,否则自身也成为一个抽象类

  • 可以定义没有抽象内容的抽象类,防止制造该类的对象

接口

  • 接口是一种更抽象的纯抽象类
  • 所有方法均为抽象方法
  • 所有变量均为public static final
  • 接口不能实现(implements)另一个接口,但它可以继承多个其它的接口
  • 接口中的所有抽象方法为public

把类与接口分开来看,即不把接口视为一种类
- 类实现接口:实现所有抽象方法
- 接口继承接口:表明当前类(接口)也拥有继承来的所有抽象内容
即用于制造对象的类实现不了继承接口的意义,只有接口继承接口才有意义,继承接口后重写所有抽象方法即是实现接口,否则本身成为抽象类。(继承或许可以用来获得接口的类变量

接口是一种间接的多继承继承中得到了父类方法的实现,继承(实现)接口只得到方法的存在性,Java通过单继承类,多实现接口,来达到受限制的多继承效果

当用一个接口类型的变量管理一个实现该接口的类时,只能调用到接口类的方法,即是接口类型是该变量的动态类型,符合造型的概念,因此接口符合类的概念

接口用来沟通不相容的类,使之产生恰当的关系

接口是更高级别的抽象 比如体现在 接口中的变量必须为(也默认为)public static final
方法必须为public
接口不能继承纯抽象类。Java 规定接口只能继承接口 接口存在的意义 提供更高级别的抽象 对实现方法开放 对修改关闭

2018/7/20

原文地址:https://www.cnblogs.com/kafm/p/12721855.html