C#学习入门(六)——静态类和密封类

1. 静态类

1.1 静态成员

 静态成员又叫类成员,是指在成员类型或返回值类型前使用static关键字修饰的变量或方法。在C#中,能够声明为静态成员的类成员包含静态成员、静态属性、静态方法、构造函数、运算符、事件等类成员。常量和索引器不能声明为静态成员。

1.2 静态字段

1.2.1 定义

访问修饰符 static 数据类型 字段名 = 初始值;

public class Student
{
	public static int count;
}

1.2.2 访问

//(1)类内访问
public class Student
{
	public static int count;
	void Set()
	{
		count = 100;
	}
}
//(2)类外访问:类名.字段名
Student.count = 0;

1.3 静态方法

1.3.1 定义

访问修饰符 static 返回类型 方法名(参数列表)
{
方法体;
}

public class Student
{
	public static int count;
	public static int Get()
	{
		return count;
	}
}

1.3.2 访问

//(1)类内访问
public class Student
{
	public static int count;
	public static int Get()
	{
		return count;
	}
	public static void Show()
	{
		Console.WriteLine("Count = {0}",Get());
	}
}

//(2)类外访问:类名.静态方法名(参数列表)
int Result = Student.Get();

1.4 静态成员关键

(1)静态成员用static关键词声明
(2)静态成员用类名调用
(3)子类继承父类,也会继承父类的静态成员
(4)静态成员属于类,不属于类的对象
(5)静态成员不能用关键字this和base

1.5 静态方法与实例方法区别

(1)用static修饰的方法为静态方法,反之则是实例方法(非静态方法)
(2)静态方法不需要类实例化就可以调用,实例方法需要类实例化才可以调用。
(3)静态方法只能直接访问本类中的静态成员,不能直接访问本类的的实例成员。实例方法既可以直接访问本类的静态成员,也可以直接访问本类的实例成员。(实例方法可以调用静态方法,静态方法不能调用实例方法)
(4)静态方法不能被子类重写,也不能实现多态
(5)静态成员是在第一次使用时进行初始化,实例成员是在创建对象时初始化。
(6)静态成员不能自动进行销毁内存,而实例化的对象不再使用时,CLR会自动清除这些对象所占的内存。在程序设计中尽量不要使用静态成员。
(7)当不需要访问某个实例的成员变量,可把该方法设为静态方法。反之设为实例方法。

1.4 静态类

1.4.1 定义

访问修饰符 static class 类名 : 基类或接口
{
访问修饰符 static 类的成员1;

访问修饰符 static 类的成员n;
}

 在声明类时使用static则声明该类是静态类,静态类中仅包含静态成员。 对于静态类,不能使用new关键字创建静态类的实例。
 静态类在加载包含该类的程序或命名空间时由.NET Framework公共语言运行库(CLR)自动加载。

1.4.2 访问

//类名.成员名

访问静态类成员的方法与访问非静态类中静态成员的方法相同。
静态类不创建对象,主要用于工具类,全局变量。

1.4.3 静态构造函数

静态构造函数用来初始化静态变量。

static 类名()
{
静态构造函数的成员;
…;
}

class Student
{
    public static int count;
    //静态构造函数
    static Student()
    {
        count = 10;
    }
    public static int Get()
    {
        return count;
    }
    public static void Show()
    {
        Console.WriteLine("Count = {0}",Get());
    }
}

关键:
1.静态构造函数无访问修饰符,无参数,无返回类型,只有一个static关键字。
2.一个类只能有一个静态构造函数。
3.非静态类也可以静态构造函数,可以与无参的实例构造函数共存。
4.不可显式调用静态构造函数,当创建第一个实例或引用静态成员之前,自动调用静态构造函数来初始化类,并且只执行一次。
5.定义静态成员初始化,同时在静态构造函数进行初始化,则以静态构造函数为主。
6.静态构造函数不可被继承。



2. 密封类

2.1 密封类定义

访问修饰符 sealed class 类名 : 基类或接口
{
    类的成员;
}

在类的定义中使用sealed关键字声明的类称为密封类,密封类不能作为基类和派生类,也不能是抽象类。

2.2 密封方法

访问修饰符 sealed override 方法名称(参数列表)
{
    方法体;
}

密封方法会重写基类中的virtual方法,但其本身不能在任何派生类中进一步重写,如果实例方法声明包含sealed修饰符,则它必须包含override修饰符

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗夜无风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值