C#抽象类与密封类-abstract-sealed

  • 博主写作不容易,孩子需要您鼓励
  • 万水千山总是情 , 先点个赞行不行

如果说继承是面向对象设计理论的基石,那么抽象理论和方法就是继承理论的顶梁柱。

抽象类和抽象方法

简单的说,用来描述共性的类就是抽象类,抽象类中不考虑具体实现,只确定必须具有的行为,即确定抽象方法。如教师的任务是教学,具体教什么,如何教,每个教师都有自己独特的一面,对教学这个动作就可以提取出来作为抽象方法,而不考虑具体实现内容。包含抽象方法的类就是抽象类。抽象类和抽象方法声明使用abstract关键字。

  • 语法格式如下:
  • <访问修饰符> abstract class 抽象类名
        {		//类体
                <访问修饰符> abstract 返回类型 方法();	//抽象方法
        }
    

    例如,声明了有一个抽象方法Display方法的抽象类Employee

    public abstract class Employee
        {
            public abstract void Display();             //抽象方法Display
        }
    

    实现抽象方法

    C#中通过方法重写来实现抽象方法。当一个抽象基类派生一个派生类时,派生类将继承基类的所有特征,重新实现所有的抽象方法。在派生类中实现基类的抽象方法,是使用override关键字来重写基类方法。
    为上边的抽象类Employee创建一个名为Manage的派生类,实现Employee类中的抽象方法Display

    public class Manager : Employee
        {
            private string name;
            public Manager(string Name)
            {
                name = Name;
            }
            public override void Display()
            {
                Console.WriteLine("Name:" + name);
            }
        }
    

    在主函数中可以创建Manager类的对象,调用Display方法显示Manager的name。
    例如:

    Manager obj = new Manager("李强");
    obj.Display();
    

    接口、类和抽象类

    一个类可以同时继承类和接口,或者抽象类和接口,抽象类和类不能在一个类的继承列表中同时出现。如果派生类同时继承类或抽象类或接口,一定要把类或者抽象类写在前面,接口写在后面,类名和接口名之间用“,”隔开,接口没有先后顺序。每一种继承都要根据各自的规则去实现。
    接口与抽象类的区别如下。

    1. 抽象类是一个不完全的类,需要通过派生类来完善它。
    2. 接口只是对类的约束,它仅仅承诺了类能够调用的方法。
    3. 一个类一次可以实现若干个接口,但是一个类只能继承一个基类。
    4. 抽象类只需派生类实现他的抽象方法,接口要求必须实现它的所有成员。
      在实际编程中,接口的使用要比抽象类广泛的多。

    密封类

    与抽象类相反,C#支持创建密封类,密封类是不能当基类的类。其他的类不能从此派生,从而保证了密封类的密封性和安全性。在C#中使用sealed关键字创建密封类。
    代码示例:

     public sealed class Animal
        {
            public Animal()
            {
                Console.WriteLine("动物被构造");
            }
        }
    

    当从animal派生派生类时,编译器会提示出现错误。设计类的时候,通常情况下是不需要将类设计为封装类的,因为封装类会让类的拓展性非常差,这个类也无法再次派生和拓展。但是出于某种目的,当程序块只完成某些特定任务时,就可以使用密封类对类进行密封,以保证类的可靠性。

    ------------------------------------------------------------------------------------------
                                                  分割线
    ------------------------------------------------------------------------------------------
    
    • 博主简介:
    • 工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱:2296776525@qq.com
    • 帮忙点个赞吧。哈哈。
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值