c# 类和成员的修饰详细介绍

基本概念
一.类是对于业务处理对象的封装, 包括状态和行为的封装.
二.类的成员种类:
1.常量: 数据值恒定不变的一个符号
2.字段: 字段表示一个只读或者可读写的数据值. 通常用字段来标识一个类或者类产生对象的某种状态,
在实践中,通常将字段标识为private, 避免从类/对象外破坏类/对象的状态。
3.实例构造器(Constructor):将新对象的实例字段初始化为良好初始状态的一种特殊方法。
4.类型构造器,也就是静态的Constructor, 用来初始化类的静态字段。
5.方法:一个特殊的函数,用来更改或者查询一个类型或者对象的状态。
6.属性:用来封装字段在外部的访问,避免直接访问字段。
7.事件:封装一个委托链,通过某种触发机制,通知委托链中的方法执行。
8.子类型:嵌套在类型中的类型,作用是分离复杂性。
9.操作符重载:重新定义在类所产生对象之间的特定操作:例如 +, -, ++等。
10.转换操作符:定义如何显示或者隐式的将类转换为另外一种类型。

类的修饰关键字
一. 可访问性修饰
1. public:用于非嵌套类,访问无限制。
2.internal:用于非嵌套类,仅对定义程序集的所有代码可见。
3.private:用于嵌套类,仅对包含它的类的成员可见。
4.protected:用于嵌套类,仅对包含它的类A以及A的派生类A_Derived中的成员可见。
二.静态类修饰符
1.static:用于定义永远不需要实例化的类,例如Console, Math, Environment等。
2.静态类不能继承除System.Object以外的基类,也不能实现接口
3.静态类只能定义静态成员
4.静态类不能作为字段,方法参数或者局部变量使用,因为它们都代表引用了一个实例的变量。
三.分部类修饰符
1.Partial: 用于将一个类或者结构分解成不同的逻辑单元,目的在于分解类型的复杂性。
2.常见场景在Winform定义窗体或者控件时,自动生成的前端单元和逻辑单元。
四.组件与多态修饰符
1.abstract: 表明一个抽象类,不能直接生成该类的实例,只能通过继承的方式实现。
2.sealed: 表明该类型不能用于基类型。
3.new:用于在衍生类中定义的嵌套类型,表明该嵌套类型与基类中的同名嵌套类型无关。

类成员的修饰关键字
一.可访问性:不详细解释,与类的修饰大同小异
1.public
2.private
3.protected
4.internal
二.静态成员:不详细解释
三.组件与多态修饰:
1.abstract: 用于基类成员,表示为了构造派生类型的实例,派生类型必须实现并且重写这个方法。
2.virtual: 用于基类成员,表示这个成员可由派生类型重写
3.override: 用于派生类成员,表示派生类型重写了基类型的成员。
4.sealed: 用于基类成员,表示这个成员不能被派生类型重写,只能用于方法。
5.new:用于派生类成员,表示这个成员与基类中的同名成员不存在重载关系。

本章知识最佳实践
一.设计类和成员的可访问性的最佳实践:
1.定义类时,除非确定它将作为基类使用,不然应该讲它指定为Sealed。
原因是:派生类型的行为不可预测,如果基类没有进行密封,在后续版本中或者其他团队成员定义的派生类有可能会破坏基类的状态或者预期行为。
2.定义类时,如果不确定将在程序集外公布这个类,则应该将类指定为internal。
原因也是出于安全性方面的考虑。
3.在类的内部,所有数据字段都应该定义为private,原因是出于对状态的保护。每个类/对象的状态都应该只能由自己本身来控制。
4.在类的内部,除非确定某个方法,属性需要在子类中重写,不然不要使用virtual。
原因有两个,一是调用虚方法在CLR中会消耗更多性能;二是虚方法会丧失基类对自身行为的控制权。
5.在类中定义嵌套类时,应将嵌套类修饰为private。这个规则在VS中会被强制检查。
二.静态类与单例模式的异同:
1.相同之处:都为类型成员提供单一入口
2.不同之处:
a.静态类难以控制初始化时机
b.静态类不支持基类,派生类,也不支持实现接口,对多态的支持性较差。
c.静态类的实现较为简单,不支持多态的情况下安全性较高

(0)

相关推荐

  • c# 类和成员的修饰详细介绍

    基本概念: 一.类是对于业务处理对象的封装, 包括状态和行为的封装. 二.类的成员种类: 1.常量: 数据值恒定不变的一个符号 2.字段: 字段表示一个只读或者可读写的数据值. 通常用字段来标识一个类或者类产生对象的某种状态, 在实践中,通常将字段标识为private, 避免从类/对象外破坏类/对象的状态. 3.实例构造器(Constructor):将新对象的实例字段初始化为良好初始状态的一种特殊方法. 4.类型构造器,也就是静态的Constructor, 用来初始化类的静态字段. 5.方法:一

  • Python类的继承与多态详细介绍

    目录 概念 类的创建 类的继承 多态的使用 概念 类(Class): 用来描述具有相同的属性和方法的对象的集合. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用 self:self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类. 类调用 Car.weight 实例化  car01=Car(5) 实例对象调用  car01

  • Vue生态的新成员Pinia的详细介绍

    目录 安装和配置 Store核心 State Getters Actions Vue Devtools 最后 结论 参考文献 Pinia是Vue应用程序的状态管理方案,是Vuex核心团队成员开发.感觉更像是常规的旧 javascript 导入模块,实现了很多Vuex5的提案. Pinia同时支持Vue2和Vue3,不过下面展示的例子都是使用Vue3,Pinia的版本是Pinia@2.0.9. Vue2和Vue3使用的Pinia版本有一点不同,因此请查看官方Pinia 文档以获取更多信息. 安装和

  • 详细介绍python类及类的用法

    一.类的成员 类的成员包括:属性和方法. 属性可以分为:静态属性和实例属性 方法可以分为:普通方法.类方法和静态方法. 1.1 类的属性 属性可以分为:静态属性和实例属性. 实例属性属于对象,而静态属性属于类. 通过类创建对象时,如果每个对象都具有相同的属性,那么就使用静态属性. 1.1.1 静态属性的创建方式 静态属性是属于类的,所以不用创建对象访问. class Province: # 静态字段 country = '中国' # 直接访问静态字段 Province.country 例如: 1

  • Python 类和对象详细介绍

    目录 对象 = 属性 + 方法 self是什么 公有和私有 继承 调用未绑定的父类方法 使用super函数 多重继承 组合 构造和析构 _ _init_ _(self[, …])构造方法 _ _new_ _(cls[, …])方法 _ _del_ _(self)析构方法 什么是绑定 对象 = 属性 + 方法 我们前面其实已经接触过封装的概念,把乱七八糟的数据扔进列表里面,这是一种封装,是数据层面的封装:把常用的代码段打包成一个函数,这也是一种封装,是语句层面的封装:现在我们要学习的对象,也是一种

  • Kotlin类的继承实现详细介绍

    1.在kotlin中,默认类都是封闭的closed的.如果要让某个类开放继承,必须用open关键字修饰 类中的方法默认也是关闭的.如果需要子类复写父类的方法,也必须用open修饰. 1)定义父类,用open将类继承打开.用open将函数的复写打开. //父类必须用open修饰,才能够被继承 open class Person(val name:String) { var age = 0 //父类定义的函数,必须有open修饰,子类才能复写 open fun doWork(){ println("

  • Java中ArrayList类详细介绍

    Java中ArrayList类详细介绍 ArrayList是一个可变长度数组,它实现了List接口,因此它也可以包含重复元素和Null元素,也可以任意的访问和修改元素,随着向 ArrayList 中不断添加元素,其容量也自动增长.不过ArrayList是非同步(同步的意思是如果多个线程同时访问一个实例,任何一个线程对实例做了修改之后,其他线程所访问到的实例应该是修改过的最新的实例)的, 我们经常使用List list = Collections.synchronizedList(new Arra

  • Hibernate核心类和接口的详细介绍

    一.hiobernate核心类和接口预览图 二.hibernate.properties 这个文件是以前老版本使用的 类似于hibernate.cfg.xml文件:作用和hibernate.cfg.xml一致. 三.hibernate.cfg.xml  (1)详细介绍 ①该文件主要用于指定各个参数,是hibernate核心文件 ②默认放在src目录下,也可以放在别的目录下. ③指定连接数据库的驱动.用户名.密码.url.连接池.. ④指定对象关系映射文件的位置. ⑤也可使用hibernate.p

  • Java中关于Collections集合工具类的详细介绍

    Collections 是一个操作 Set.List 和 Map 等集合的工具类. Collections 中提供了一系列静态的方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法. 排序操作 reverse(List):反转 List 中元素的顺序 shuffle(List):对 List 集合元素进行随机排序 sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序 sort(List,Comparator):根据指定的 C

  • java中Object类4种方法详细介绍

    目录 Object(四大方法): hashCode()方法: equals()方法: getClass()方法: toString()方法: 总结 Object(四大方法): 文章干货满满,耐性看完~~何为Object?首先先来看看官方对Object的介绍:在这里附上Java官方的查阅工具:https://docs.oracle.com/en/java/javase/17/docs/api/index.html 由官方介绍可见,object属于Java.lang包内的一个类,而且提供了很多种方法

随机推荐