• C# abstract class Interface的介绍


    1、基本概念介绍

    抽象类:

     1.抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法
     2.抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
     3.具体派生类必须覆盖基类的抽象方法
     4.抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。
     5.抽象类不能被实例化

    接口:

     1.接口不能被实例化
     2.接口只能包含方法声明
     3.接口的成员包括方法、属性、索引器、事件
     4.接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员。
     5.接口中的所有成员默认为public,因此接口中不能有private修饰符
     6.派生类必须实现接口的所有成员
     7.一个类可以直接实现多个接口,接口之间用逗号隔开
     8.一个接口可以有多个父接口,实现该接口的类必须实现所有父接口中的所有成员。

    相同点:

     1、都可以被继承
     2、都不能被实例化
     3、都可以包含方法声明
     4、派生类必须实现未实现的方法

    区别:

     1、抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。
     2、接口可以被多重实现,抽象类只能被单一继承

     3、抽象类是一个不完整的类,需要进一步实现(继承,并实现方法)。接口是一个行为规范,可以直接继承引用

     4、接口基本不具备继承的特性,仅仅能够调用而已。

     5、接口可以用于支持回调,而继承并不具备这个特点
     
    如果抽象类中实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口方法

    目标 选择
    创建多个组件版本
    抽象类
    设计小而简练的功能块
    接口
    设计大型功能单元
     抽象类

     

     

     

     

     

     

     

    2、abstract class和interface的使用场景

    1、首先来理解一下抽象类。在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去       不同,但是本质上相同的具体概念的抽象。比如我们xpads 项目中的交易类就可以理解为一个抽象类,即期交易、远期交易、掉期交易等都是继承交易类的具体类。即期交易、远期交易、掉期交易这些具体概念是实际存在的,而交易这个概念在问题领域中是不存在           的,可以理解为一个抽象概念。正是因为抽象概念在实际问题领域中没有东西与它对应,所以用以表征抽象概念的抽象类是不能被实例化的。

    2、接下来理解一下接口,接口是面向对象设计中的一组规范,是一组方法的集合体(也可以定义一些常量),在一些软件设计模式中提倡的面向接口编程,其实就是屏蔽实现类的内部处理,增强模块的安全性、灵活性,达到软件设计的高内聚、松耦合。

    3、抽象类应用在具有相同特征和行为中,可以有实现的方法,可实现复用,接口更多的是一种行为定义,不能有实现成员。

     

     

     

  • 相关阅读:
    [转]PHP如何关闭notice级别的错误提示
    [原]php远程odbc连接sqlsvr数据库,自定义端口,命名实例的连接方式
    [原] wmic: Invalid XSL format (or) file name错误解决方法
    [转]PHP Session的一个警告
    [转]权限问题导致Nginx 403 Forbidden错误的解决方法
    [转]require(),include(),require_once()和include_once()区别
    [转]Mysql命令行常用操作
    php读取sql2000的image字段,被截断的问题
    一、基于hadoop的nginx访问日志分析---解析日志篇
    shell判断条件整理
  • 原文地址:https://www.cnblogs.com/zjtao/p/11345366.html
Copyright © 2020-2023  润新知