C#关键字static、virtual和abstract笔记

C#关键字static、virtual和abstract笔记

static 静态

可修饰类、类的构造函数,类的成员等;

[访问修饰符] static class 类名 
{
	//类的成员
}
 
static  静态函数构造名() 
{
	//语句
} 

[访问修饰符] static 数据类型 数据成员 

应用场景:类、类的构造函数或类的成员所引用或操作的信息与类有关,而与类的实例无关时

作用:

静态构造函数会自动调用,实现静态数据成员初始化
静态类不必实例化直接就可以调用静态成员,实现更简单,迅速

特点:
  1. 静态成员属于类,只能通过类来访问
  2. 静态数据成员不需要类实例化就已经分配内存空间
  3. 静态构造函数只调用一次
  4. 静态方法不能用代表当前实例的this关键字,也不能访问实例成员或调用实例方法
  5. 静态类不能实例化不能被继承
  6. 静态类仅包含静态成员

virtual 虚拟

可修饰方法,属性等,与覆盖override配合使用

[访问修饰符] virtual 返回值类型 方法名([参数列表]{
	//语句
}

[访问修饰符] virtual 数据类型 属性名 
{
	//属性体
}

应用场景:派生类需要重载从基类继承的方法和属性实现多态性

作用:
  1. 重载虚拟的基类成员,实现类多态性
  2. 根据对象所引用的实例,来自动调用覆盖前和覆盖后的方法
特点:
  1. 字段不能虚拟
  2. 使用sealed override(密封覆盖)可以停止虚拟继承
  3. Override是覆盖不是替换,覆盖可调用覆盖前的方法
  4. 派生类可以不重载基类的虚方法

abstract 抽象

可修饰类,方法,属性等,派生类使用override重载

public abstract class 抽象类名 
{
	[访问修饰符] abstract 返回值类型 方法名([参数列表];
}

public abstract 数据类型 属性名 
{
	 get;
	 set;
}

应用场景:需要统一、规范派生类方法或属的声明格式

作用:
  1. 提供多个派生类可共享的基类的公共定义
  2. 抽象方法没有方法体,只用来让派生类重写
  3. 抽象属性不提供具体实现,只声明数据类型、名字、可访问性等,具体实现代码留给派生类
特点:
  1. 抽象类不能直接实例化
  2. 抽象成员必须在抽象类中声明,抽象类中可以有非抽象成员
  3. 抽象类不能是静态或密封的
  4. 抽象成员没有具体实现,派生类必须重载基类的抽象成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值