【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

posted @ 2024-02-03 10:47  VisionCode  阅读(72)  评论(0编辑  收藏  举报