第五章 类
来源:互联网 发布:中国经济史图书知乎 编辑:程序博客网 时间:2024/05/21 15:02
1、面向对象
面向对象主要有三个主要特征:封装、继承和多态。
1.1 封装
封装的目的是隐藏细节,使数据不会因为不慎被修改,易于代码理解和维护。
1.2 继承
继承的目的是代码重用,派生类继承基类的成员,可以修改继承的成员,也可以创建新的成员。
1.3 多态
多态的目的是接口重用,共享同一个接口,却能得到不同的实现。
2、静态成员
2.1 静态构造器
静态构造器不能被“显式”的调用,而是在“运行时”在首次访问类时自动调用静态构造器。“首次访问”包括调用普通构造器、调用静态方法或字段。由于不能显式的调用,所以不支持任何参数。
class Employee
{
static Employee()
{
... ...
}
}
2.2 静态类
静态类使用static关键字修饰,静态类不能实例化,既然不能实例化,实例字段和方法也就没有意思,所以静态类中不能包含任何实例字段和方法。静态类的另一个特点是不可扩展,即不能从静态类派生其他类
class static SimpleMath
{
static int Max(int x)
{
... ...
}
}
3、扩展方法
扩展方法的作用是在不改变类型结构为类型添加实例方法。创建扩展类和扩展方法,并将扩展类和扩展方法声明为static,扩展类的第一个参数为要扩展的类型,并在类型名前附加this关键字。
public static class DirectoryInfoExtension
{
public static void CopyTo(this DirectoryInfo sourceDriectory, string target)
{
... ...
}
}
在使用扩展方法的代码中使用using指令导入扩展类型的命名空间。如果扩展方法与实例方法同名,则实例方法优先级更高。
4、封装数据
4.1 const
const字段在初始化后,其值不可以再修改,const字段自动称为静态字段,所有的实例共享同一个const字段。但是,不能将const字段显式的声明为static。
class ConveUnits
{
public const float Value Max = 200;
... ...
}
4.2 readonly
readonly只能用于字段,被声明readonly的字段只能在构造器中修改更改,或者在声明时初始化。readonly可以是实例字段,也可以是静态字段。
class Employee
{
public readonly int Id;
... ...
}
5、分部类
分部类的作用是将类或结构、接口或方法拆分到若干源文件中,每个源文件包含类或方法的一部分,再编译时将他们组合成一个完整的类。
5.1 定义分部类
声明分部类要使用partial关键字,并且每个类的访问性必须一致,即一个类为public其他类必须为public。
// File:Program1.cs
partial class Program
{
}
// File:Program2.cs
partial class Program
{
}
5.2 定义分部方法
分部类或结构可以包含分部方法。 类的一个部分包含方法的签名。 可以在同一部分或另一个部分中定义可选实现。 如果未提供该实现,则会在编译时删除方法以及对方法的所有调用。
// Definition in file1.cs partial void onNameChanged(); // Implementation in file2.cs partial void onNameChanged() { // method body }
分部方法声明必须以上下文关键字 partial 开头,并且方法必须返回 void。
分部方法可以有 ref 参数,但不能有 out 参数。
分部方法为隐式 private 方法,因此不能为 virtual 方法。
分部方法不能为 extern 方法,因为主体的存在确定了方法是在定义还是在实现。
分部方法可以有 static 和 unsafe 修饰符。
分部方法可以是泛型的。 约束将放在定义分部方法声明上,但也可以选择重复放在实现声明上。 参数和类型参数名称在实现声明和定义声明中不必相同。
你可以为已定义并实现的分部方法生成委托,但不能为已经定义但未实现的分部方法生成委托。
- 第五章 类
- 第五章 类和接口
- 第五章 类和继承
- 第五章 类和继承
- 05 C# 第五章 类
- 第五章及其嵌套类
- 第五章Object-C类
- 第五章 类和继承
- 第五章 对象 和 类
- 第五章 接口、抽象类
- 第五章
- 第五章
- 第五章
- 第五章
- 第五章
- 第五章
- 第五章
- 第五章
- cocoapods遇到的问题
- 证书不被信任解决方法
- js基础-AJAX、file、http进度、同源策略
- lucene全文检索
- JSP环境搭建
- 第五章 类
- HDU1096
- 查询某实例所占空间大小
- hibernate 延迟加载 load和get方法
- JS根据传入日期算出当前周一到周日的日期数组
- Spark源码解析之SparkStreaming中Receiver的启动
- Xbanner
- Excel2007怎么输入有效的身份证号码不让其变成科学计数法
- 前端开发---微信小程序中的页面代码中的模板的封装