• 接口与抽象类的区别


    1 接口可以多重继承,但是抽象类不可以;   接口为了实现系统中的松偶合.

    2 抽象类与子类,是父子关系; 而接口则不是,是松偶合的关系.

    3 抽象类能够定义方法的实现; 接口不能包含方法的实现。

    4 最大的区别是由抽象类可以派生出一些成员的实现,但接口却不包含任何成员的实现

    5 如果继承一个抽象类,当你类更新时,所有的子类都会跟着更新;而接口是一成不变的,一旦发布了一个接口,永远不要再更改它

    6 少量的的接口

    7 抽象类可以有实现的过程,而接口没有

    8 抽象类可以重载

    9 你只能继承一个抽象类,而接口被继承的同时还可以继承其它类和接口

    10 接口:

    接口可以有静态成员、嵌套类型、抽象、虚拟成员、属性和事件。实现接口的任何类都必须提供

    接口中所声明的抽象成员的定义。接口可以要求任何实现类必须实现一个或多个其他接口。

    对接口有以下限制:

    接口可以用任何可访问性来声明,但接口成员必须全都具有公共可访问性。

    不能向成员或接口自身附加安全性权限。

    接口可以定义类构造函数,但不能定义实例构造函数。

    每种语言都必须为需要成员的接口映射一个实现提供规则,因为不只一个接口可以用相同的签名声明成员,且这些成员可以有单独的实现

    抽象类:

    抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。抽象类和接口之间的 一个主要差别是:类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承。从抽象类派生的类仍可实现接口。可以在创建组件时使用抽象类,因为它 们使您得以在某些方法中指定不变级功能,但直到需要该类的特定实现之后才实现其他方法。抽象类也制定版本,因为如果在派生类中需要附加功能,则可以将其添 加到基类而不中断代码。

    11 接口是非常简单、原始的东西,例如没有设计传递性(IA应用IB,IC应用IA,但是IC并不具有IB接口,此时只能让IC额外应用IB接口),不能用来 复用代码流程等。如果你的类继承了接口IA,那么当IA稍有修改的时候,所有应用了IA的代码都会垮掉,必须重新写。

    抽象类仅仅是因为有个别内容暂时决定不了,大部分内容还是在高层次就说清楚的用来继承的。如 果你在高层次就全是虚拟的,那么这个类是完全空洞的,此时机非常像接口了(尽管仍然比接口方便一些,例如具有设计传递性)。但是.net、java等不支 持多重继承,相比c++的能力要差很远。

    功能强大的、面向逻辑、面向对象、具有现成的自动化控制逻辑的编程方式总是被只会琐碎、顺序 地编程的人妖魔化。只会c的人妖魔化c++,只会接口的人妖魔化继承,等等。其实任何东西都不是不必要的,你看java的各种系统、.net的类库,简单 看一下源代码到底哪些东西在对系统结构的实用性起关键作用,难道它们用接口来替代了继承了吗?

    空洞的类没有什么价值,尽量设计有实质内容的类。这就在实用性、内容上与接口清楚地分开了。

    但是很遗憾.net、java不支持多重继承,不得不用接口来勉强模拟。

    传统的COM等标准也不支持多重继承。被逼无奈,那些开发世界上最实用、最赚钱的个人系统的应用大师(而不是那些书写各种规范的大学教授们)大量使用object类型,以便使用后期绑定的各种技巧来模拟只有多重继承才具有的功能。范型有点缓解这些object造成的问题。

    Powered By D&J (URL:http://www.cnblogs.com/Areas/)
  • 相关阅读:
    kafka的使用
    linux卸载mysql
    kafka单机版的安装、集群部署 及使用
    winform改变启动界面
    C#连接sqlserver数据库
    叠加dgv中相同的行信息
    重定向和转发
    [Jenkins] 配置任务中的坑s
    【Android】冷门常用 ADB
    Linux 常用环境搭建
  • 原文地址:https://www.cnblogs.com/Areas/p/2182346.html
Copyright © 2020-2023  润新知