zoukankan      html  css  js  c++  java
  • 抽象类和接口的区别

    一、什么是抽象类。

    在面向对象的概念中,所有的对象都是通过类来描述的,反过来却不是这样的,所有的类却不都是用来描述对象的,如果一个类没有包含足够的信息来描述一个对象,这样的类就是抽象类。抽象类往往用来表征我们对问题领域进行分析、设计的出来的抽象概念,是对一系列看上去不同,但本质上相同的具体概念。我们可以构造出一个固定行为的抽象描述,但是这组行为可以有任意可能的实现方式。这里面抽象描述为抽象类,具体实现为所有可能的派生类。抽象类同时也是OCP(Open-Closed Principle)的关键。

    在java中,interface和abstract class都是为了实现这样的功能。

    A、语法定义上的不同。

    Abstract Class可以有自己的数据成员,构造函数(这个是可以有的呀!),也可以有非抽象方法,但是interface则是只能有static final修饰的数据成员,所有的方法为abstract。

    B、从设计层面上的不同。

    abstract class体现的是一种继承关系,其父类和派生类的概念本质是相同的,对于interface来说,它体现的是一种功能上的规范。

    C、在使用上的不同

    abstract class是类,只能单继承,而接口本身继承多个接口,类可以实现多个接口。

    使用abstract class可以保证层次关系,避免代码的重复,interface可以有效的分离行为和实现,为代码的维护和修改带来方便。

  • 相关阅读:
    Javascript 如何识别数组
    新手 如何搭建一个vue项目详解
    javasScript 七种数据类型
    WPF实现动画的几种方式及其小案例
    问题清单
    2020软件工程个人作业06——软件工程实践总结作业
    我的“捡漏”生涯——小黄衫篇
    2020软件工程作业05
    2020软件工程作业03
    Python: list indices must be integers or slices, not float问题
  • 原文地址:https://www.cnblogs.com/rookie111/p/7615751.html
Copyright © 2011-2022 走看看