【C#】抽象类、密封类、静态类的概念
一、什么是抽象类
含义:抽象类就是指设计为被继承的类,抽象类只能被用作其他类的基类。
要点:
抽象类使用abstract修饰符声明
抽象类不能被创建实例。
抽象类可以包含抽象成员或普通的非抽象成员。(抽象成员下面会进行说明)
抽象类可以继承另一个抽象类
任何派生自抽象类的类必须使用override重写抽象类中所有的抽象成员,除非派生类自己也是抽象类。
二、抽象成员
含义:抽象成员是指设计用来被覆写的函数成员。
要点:
抽象成员只可以在抽象类中声明。
抽象成员必须是一个函数成员。(字段和常量不能为抽象成员)
必须使用abstract修饰符标记。
抽象成员不能有实现代码块。(代码块用分号代替)
只有4个类型的成员可以声明为抽象的。(方法、属性、事件、索引器)
抽象成员不能标记为虚方法。(不能使用virtual标记抽象成员)
比较虚成员和抽象成员
抽象类代码示例:
abstract class MyBase
{
public int SideLength = 10;//数据成员
const int TriangleSideCount = 3;//数据成员
abstract public void PrintStuff(string s);//抽象方法
abstract public int MyInt { get; set; }//抽象属性
public int PerimeterLength() //非抽象方法
{
return TriangleSideCount * SideLength;
}
}
//继承抽象类
class MyClass : MyBase
{
private int _myInt;
//覆盖抽象属性
public override int MyInt
{
get { return _myInt; }
set { _myInt = value; }
}
//覆盖抽象方法
public override void PrintStuff(string s)
{
Console.WriteLine(s);
}
}
//测试
class Test
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
myClass.PrintStuff("string");
myClass.MyInt = 1;
Console.WriteLine(myClass.MyInt);
Console.WriteLine("Perimeter Lengeth: {0}",myClass.PerimeterLength());
}
}
三、密封类
抽象类必须用作基类,不能像独立的类那样被实例化。密封类与抽象类相反。
密封类只能用作独立的类,它不能用作基类。(不能被其他类所继承)
密封类使用sealed修饰符标注。
四、静态类
含义:静态类中所有成员都是静态的。静态类用于存放不受实例数据影响的数据和函数。(常见用途:创建一个包含一组数学方法和值的数学库)
重点:
类本身必须标记为static
类的所有成员必须是静态的
类可以有一个静态构造函数,但不能有实例构造函数,不能创建该类的实例
静态类是隐式密封的,也就是说不能继承静态类。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_66598341/article/details/129784614
📢博客主页:https://www.cnblogs.com/VisionCodeBlog
📢本文由 VisionCode原创,首发于 博客园,转载请注明原文链接:https://www.cnblogs.com/VisionCodeBlog/p/18004420🙉
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
📢技术进步源于分享与交流✨