zoukankan      html  css  js  c++  java
  • C# 抽象类

    使用abstract关键字修饰的类叫做抽象类。父类无法确定子类行为时可以定义为抽象类

    抽象类特点:

    1. 抽象类不能被实例化,主要用于被继承;抽象类里可以包含两种抽象成员,分别是抽象方法声明和抽象属性,同时可以包含其他非抽象成员。也可以包含构造函数,虽然不能被实例化
    2. 如果继承抽象类,则需实现抽象类中的所有抽象成员;如果子类也是一个抽象类,则可以不重写
    3. 不能使用Sealed关键字修饰抽象类,因为Sealed意味着不能被继承,同样Static也不能用于修饰抽象类,因为Static意味着会有一个实例
    4. 抽象成员的访问修饰符不能是private
     1     class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             //抽象类不允许创建对象
     6             Animal a = new Cat(); //new Dog();
     7             a.Bark();
     8             Console.ReadKey();
     9         }
    10     }
    11 
    12     abstract class Animal
    13     {
    14         public abstract void Bark(); 
    15     }
    16 
    17     class Dog : Animal
    18     {
    19 
    20         public override void Bark()
    21         {
    22             Console.WriteLine("狗狗旺旺的叫");
    23         }
    24     }
    25 
    26     class Cat : Animal
    27     {
    28         public override void Bark()
    29         {
    30             Console.WriteLine("猫咪喵喵的叫");
    31         }
    32     }

    接口的抽象类的相同点和区别

    相同点:

    1.  接口和抽象类都不能实例化
    2.  接口和抽象类都包含未实现的方法
    3.  接口和抽象类都可以被子类继承
    4.  子类必须实现接口的接口成员和抽象类的抽象成员

    区别:

    1.  抽象类只能继承自一个基类;接口可以继承自多个接口
    2.  抽象类可以包含字段、属性、方法;接口只能包含属性,方法,索引器,事件,不能包含字段,构造函数、析构函数和静态成员或常量
    3.  抽象类可以包含抽象方法和实例方法;接口只包含抽象方法,不能有方法实现。
    4.  抽象类抽象成员必须显式用public修饰;接口默认为public,且不用public修饰,接口方法不能用abstract或者virtual修饰
  • 相关阅读:
    一步步构建大型网站架构
    程序员技术练级攻略
    再谈“我是怎么招聘程序员的”
    os.path.basename()
    用pymysql实现的注册登录公告练习
    缓冲(cache)和缓存(buffer)
    数据库视图,触发器,事务,存储过程,函数,备份与恢复
    mysql用户管理和pymysql
    mysql重点,表查询操作和多表查询
    数据库的约束语句和表之间的关系
  • 原文地址:https://www.cnblogs.com/zhaoyl9/p/13196683.html
Copyright © 2011-2022 走看看