C#中的public protected internal private

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中的public protected internal private相关的知识,希望对你有一定的参考价值。

1.常见的四种方位修饰符关系
下图中的protected internal是并集的关系,意思是在命名空间内是internal的,在命名空间外是protected的
技术分享
2.sealed final
sealed 修饰符可以应用于类、实例、方法和属性。这个是C#中用的
  1. 用于类时,该类被称为密封类,密封类不能被继承;
  2. 用于方法时,该方法被称为密封方法,密封方法会重写基类中的方法;sealed修饰符应用于方法或属性时,必须始终与override一起使用
  3. 结构是隐式密封的,因此它们不能被继承。

final修饰符来限定变量、字段、方法和类。这个是JAVA中用的

  1. 用于变量时,该变量只能赋值一次,不可修改;
  2. 用于方法时,该方法不能被重写或隐藏
  3. 用于类时,该类不能被继承。
  4. 接口的成员是不能使用该关键字的,道理和不能在abstract类使用final一样。

值得一提的是,如果使用final修饰类中的字段,那么该字段必须在构造函数中赋值,否则使用类实例调用的方式是无法对该字段进行赋值的,道理很简单,类在实例化时,会为每一个成员字段赋初值,之后你如果再通过实例方式调用该final字段,就属于二次赋值的情况了,这种情况是不允许的。在构造函数中为final变量赋值的方法叫做“延时赋值”(Java),相应的final变量叫做“空白final”(Java)。

Final并不是一个C#中的关键字,但经常在C#面试题中出现,例如说说“Final、Finally、finalize的区别”,其实这已经超出C#的范畴,这三个关键字分别考核了J#、.Net 容错方法、.Net垃圾收集机制,奇怪的是,每次我面试C#程序人员时,大部分人员对Final这个关键字并无陌生之感,相反却答得头头是道,看来来面试之前,早在网上有所预习,呵呵。


 




 












以上是关于C#中的public protected internal private的主要内容,如果未能解决你的问题,请参考以下文章

C#中的访问修饰符

在 C# 中,public、private、protected 和没有访问修饰符有啥区别?

c#中public和protect可以被子类继承下去吗

c# protected public private internal

C# 11 新特性:接口中的静态抽象成员

C#的默认访问权限