C#中的class类
qingheluo2021-08-30清河洛739
当定义一个类时,实际上就是定义了一个数据类型的蓝图它定义了类的对象由什么组成及在这个对象上可执行什么操作对象是类的实例:通过new classname()来实例化构成类的方法和变量称为类的成员类的定义以关键字class开始,后跟类的名称,类的主体,包含在一对花括号内成员函数和封装类的成员函数是一个在类定义中有它的定义或原型的函数,就像其他变量一样。作为类的一个成员,它能在类的任何对象上操作,且能访问该对象的类的所有成员。封装是"把一个或多个项目封闭在一个物理的或者逻辑的包中",在面向对象程序设计方法论中,封装是为了防止对实现细节的访问C#封装根据具体的需要,设置使用者的访问权限,并通过 ...
当定义一个类时,实际上就是定义了一个数据类型的蓝图
它定义了类的对象由什么组成及在这个对象上可执行什么操作
对象是类的实例:通过new classname()来实例化
构成类的方法和变量称为类的成员
类的定义
以关键字class开始,后跟类的名称,类的主体,包含在一对花括号内
成员函数和封装
类的成员函数是一个在类定义中有它的定义或原型的函数,就像其他变量一样。作为类的一个成员,它能在类的任何对象上操作,且能访问该对象的类的所有成员。
封装是"把一个或多个项目封闭在一个物理的或者逻辑的包中",在面向对象程序设计方法论中,封装是为了防止对实现细节的访问
C#封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。
public:所有对象都可以访问 protected internal:访问限于当前程序集或派生自包含类的类型 internal:同一个程序集的对象可以访问 protected:只有该类对象及其子类对象可以访问 private:对象本身在对象内部可以访问 以上5个访问修饰符从上到下访问范围依次缩小 类的默认访问修饰符internal,成员的默认访问标识符是private
设定属性的获取和赋值
class ClassName{ public variable_name{ [Access] get{ return this.variable_name; } [Access] set{ this.variable_name = value; } } } 以上代码表示ClassName类中定义了variable_name属性,该属性对外是开放的(public) 其中get表示获取该属性时返回的值,set表示当修改该属性时的操作,其中value表示赋予的值 get和set可以单独设置Access访问权限,默认为public,如private set{this.variable_name = value;}那么该属性对外时不可修改的,只能内部修改 如果get或set是默认的操作,那么可以简写为public variable_name{get;private set;},该属性是只读属性 属性默认是对外可读可写的,所以如果没有特殊需求,可以全部省略public variable_name即可
构造函数
类的构造函数是类的一个特殊的成员函数,当创建类的新对象时自动执行
构造函数的名称与类的名称完全相同,它没有任何返回类型
using System; namespace Mynamespace{ class Myclass{ public Myclass(){ // 构造函数 Console.WriteLine("对象已创建"); } } }
析构函数
类的析构函数是类的一个特殊的成员函数,当类的对象超出范围时执行。
析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数
析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。
using System; namespace Mynamespace{ class Myclass{ ~Myclass(){ //析构函数 Console.WriteLine("对象已删除"); } } }
静态成员
使用static关键字把类成员定义为静态的。
当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,类中只有一个该成员的实例。
静态变量的值可以通过直接调用类而不需要创建类的实例来获取。
using System; namespace Mynamespace{ class Myclass{ public static int num; public void count(){ num++; } public static int getNum(){ return num; } } } 上例中,如果实例化了多个Myclass类实例对象,那么无论哪个实例对象执行了count()方法,所有的实例对象中num属性都会增加1。
类的实例化
类可以看做一个特殊的数据类型,类名称就是数据类型名,所以实例化一个类应该
ClassName key = new ClassName(); 其中ClassName表示类的名称,key表示要实例话对象赋予的变量名