zoukankan      html  css  js  c++  java
  • C#基础(二)--抽象类和接口

    一、抽象类

       含有abstract修饰符的类为抽象类,抽象类可以拥有自己的构造函数,但是不能直接通过new进行实例化,可以通过子类继承,实例化子类的时候抽象类也会被实例化。

       抽象类可以包括方法也可以包括抽象方法,这是类所不能的。抽象方法只能声明于抽象类中,且不能进行实现,派生类必须覆盖它们。

       抽象类可以派生一个抽象类,可以覆盖基类的抽象方法也可以不覆盖。

    二、接口

       接口是引用类型,不能被实例化,一旦继承必须全部实现,可以多继承,不能有访问修饰符,不能实现方法。

       和抽象类有三点相似之处:1.不能被实例化  2. 包含未声明的方法  3.派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员。

      接口有以下特性:

            接口除了可以包含方法外,还可以包含属性、索引器、事件,而这些成员都被定义为共有的。除此之外,不能包含任何其他成员,例如:常量、域、

            构造函数、析构函数、静态成员。

    抽象类和接口的区别:

       1.抽象类只能单继承,接口可以多继承。

       2.抽象类中可以声明构造函数,接口中不可以。

       3.抽象类中可以使用public、private、protected等访问修饰符,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

       4.抽象类中可以包含static静态方法,接口中不行。

       5. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

       6. 抽象类中可以包含非抽象的普通方法,接口只能声明不能实现。

       7. 抽象类中可以有普通成员变量,接口中不能。

    抽象类和接口的使用场景:

       抽象类:

       抽象类主要用于关系密切的对象 ,组件的所有实现间提供通用的已实现功能,

       如果要创建组件的多个版本,设计大的功能单元 ,将使用抽象类。

       接口:

        接口适合互不相关的类提供通用功能,小而凝练的功能块也使用接口。好的接口定义要具有专一性,避免造成接口污染。

        如果一个类只实现了这个接口中的一个功能,而不得不去实现接口中的其他方法,这就叫接口污染。

  • 相关阅读:
    servlet简介
    synchronized锁的升级过程
    volatile的作用及原理
    redis数据类型
    mysql的主从复制
    redis的缓存穿透,缓存击穿,缓存雪崩
    网络从io到多路复用
    mysql索引
    mysql的执行计划
    mysql 常用函数
  • 原文地址:https://www.cnblogs.com/BounceGuo/p/10266739.html
Copyright © 2011-2022 走看看