文章目录
- 抽象类和抽象方法
- 实现抽象方法
- 接口、类和抽象类
- 密封类
|
如果说继承是面向对象设计理论的基石,那么抽象理论和方法就是继承理论的顶梁柱。
抽象类和抽象方法
简单的说,用来描述共性的类就是抽象类,抽象类中不考虑具体实现,只确定必须具有的行为,即确定抽象方法。如教师的任务是教学,具体教什么,如何教,每个教师都有自己独特的一面,对教学这个动作就可以提取出来作为抽象方法,而不考虑具体实现内容。包含抽象方法的类就是抽象类。抽象类和抽象方法声明使用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();
接口、类和抽象类
一个类可以同时继承类和接口,或者抽象类和接口,抽象类和类不能在一个类的继承列表中同时出现。如果派生类同时继承类或抽象类或接口,一定要把类或者抽象类写在前面,接口写在后面,类名和接口名之间用“
,
”隔开,接口没有先后顺序。每一种继承都要根据各自的规则去实现。
接口与抽象类的区别如下。- 抽象类是一个不完全的类,需要通过派生类来完善它。
- 接口只是对类的约束,它仅仅承诺了类能够调用的方法。
- 一个类一次可以实现若干个接口,但是一个类只能继承一个基类。
- 抽象类只需派生类实现他的抽象方法,接口要求必须实现它的所有成员。
在实际编程中,接口的使用要比抽象类广泛的多。
密封类
与抽象类相反,C#支持创建密封类,密封类是不能当基类的类。其他的类不能从此派生,从而保证了密封类的密封性和安全性。在C#中使用sealed关键字创建密封类。
代码示例:public sealed class Animal{public Animal(){Console.WriteLine("动物被构造");}}
当从animal派生派生类时,编译器会提示出现错误。设计类的时候,通常情况下是不需要将类设计为封装类的,因为封装类会让类的拓展性非常差,这个类也无法再次派生和拓展。但是出于某种目的,当程序块只完成某些特定任务时,就可以使用密封类对类进行密封,以保证类的可靠性。
------------------------------------------------------------------------------------------分割线 ------------------------------------------------------------------------------------------
- 博主简介:
- 工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱:2296776525@qq.com
- 帮忙点个赞吧。哈哈。