C#修饰符详解

  大家在新浪微博 @蜀云泉 就可以找到我啦。

一、new

  别看new这个修饰符经常用,恐怕很多人都不知道其本质。我们先来看看new修饰符的官方定义:

  new 仅允许在嵌套类声明中使用,表明类中隐藏了由基类中继承而来的与类中同名的成员。

  看懂了吗?不懂没关系,咱们接着往下看

  首先,我定义一个类:

 1 namespace 修饰符概念
 2 {
 3     class new修饰符
 4     {
 5
 6         private string StrName;
 7
 8         public string strName
 9         {
10             get { return StrName; }
11             set { StrName = value; }
12         }
13
14         private int IntPassWord;
15
16         public int intPassWord
17         {
18             get { return IntPassWord; }
19             set { IntPassWord = value; }
20         }
21
22         //上面是俩字段和属性,下面来构造,啊哈哈哈
23         public new修饰符( )
24         {
25             strName = "我是蜀云泉";
26             intPassWord = 1234567;
27         }
28     }
29 }

这个类里面有两个字段属性,一个构造,构造在new的时候会调用默认的那一个,其中构造的作用就是在new的时候初始化类数据。

  控制台代码及结果:

 1 namespace 修饰符概念
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             new修饰符 vae = new new修饰符();
 8             Console.WriteLine(vae.strName);
 9             Console.WriteLine(vae.intPassWord);
10             Console.ReadLine();
11         }
12     }
13 }

  

我的new修饰符这个类写完之后呢他是保存在硬盘中的,和内存没有半毛钱关系(除非这个类里面含有static关键字)。然后在控制台里面你new了一个该类类型的对象vae出来的时候,系统就会在内存中给这个对象vae分配一个该类大小的存储空间出来。就是这样。

二、public修饰符

  来看看官方的定义

  public  表示不限制对该类的访问

  public应该就不用讲了吧,这个用的最多,只要一个成员定义成public之后呢,该类内部可以随意的访问他,其他类也可以随意的访问他,该类被继承之后其子类也可以随意的访问他。通俗的说就是“我的就是大家的,随意拿去用,别客气”

三、protected修饰符

  来看看官方的定义

  protected  表示只能从所在类和所在类派生的子类进行访问

  看着官方的定义就应该明白了,我还是贴上代码吧:

  首先我新建一个类:  

 1 namespace 修饰符概念
 2 {
 3     class protected修饰符
 4     {
 5         private string StrName;
 6
 7         protected string strName
 8         {
 9             get { return StrName; }
10             set { StrName = value; }
11         }
12
13         protected void Start()
14         {
15             Console.WriteLine("这是被保护的一个方法");
16         }
17     }
18 }

  在控制台里面调用这个类里面的方法试试行不行:

  

namespace 修饰符概念
{
    class Program
    {
        static void Main(string[] args)
        {

             protected修饰符 vae = new protected修饰符();
             vae.

            Console.ReadLine();
        }
    }
}

结果是无法调用的。

接下来看看子类能不能调用:

 1 namespace 修饰符概念
 2 {
 3     class protected类的继承者:protected修饰符
 4     {
 5
 6         public void test()
 7         {
 8             Start();
 9         }
10     }
11 }

完全ok啊。

那么接下来我要做一个猜想了,其子类的实例化对象能不能调用这个保护的方法呢?

namespace 修饰符概念
{
    class Program
    {
        static void Main(string[] args)
        {

             protected类的继承者   vae = new protected类的继承者();
             vae.test();

            Console.ReadLine();
        }
    }
}

是可以的。好了,现在能完全了解protected的官方定义了吧。

时间: 2024-08-26 07:19:31

C#修饰符详解的相关文章

关于@property后面修饰符详解

关于@property后面修饰符详解 @property后面有哪些修饰符 1.线程安全的 atomic.nonatomic 2.访问权限的 readonly.readwrite 3.内存管理(ARC) assign.strong.weak.copy 4.内存管理(MRC) assign.retain.release 5.指定方法名称 (如何定义set get 方法) setter = getter = 由于将来我们经常需要定义一些方法来操作成员变量,而每个方法都必须有一个有意义的名称,而想名字非

MySQL的数据类型及其常用修饰符详解

MySQL的数据类型及其常用修饰符详解 ================================================================================ 概述: ========================================================================================== Mysql的数据类型     在mysql数据库当中,每一个库都是有多张表来组成的,每一个表都是由行和列来组

C#.net 中 修饰符 详解 (来自MSDN)

自己理解的不够深刻,无奈基础较差!记上一笔,记忆深刻些,哈哈…… 1. 访问修饰符 public 同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员. private 只有同一类或结构中的代码可以访问该类型或成员. protected 只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员. internal 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以. protected internal 由其声明的程序集或另一个程序集派生的类中任

C# 中4个访问符和8个修饰符详解

4个访问修饰符(是添加到类.结构或成员声明的关键字) Public:公有的,是类型和类型成员的访问修饰符.对其访问没有限制. Internal:内部的,是类型和类型成员的访问修饰符.同一个程序集中的所有类都可以访问 Private:私有的,是一个成员访问修饰符.只有在声明它们的类和结构中才可以访问. Protected::受保护的,是一个成员访问修饰符.只能在它的类和它的派生类中访问. protected internal:访问级别为 internal 或 protected.即,“同一个程序集

Koltin——最详细的可见性修饰符详解

在Kotlin中,不管是类,对象,接口,构造函数,函数,属性及其设置器都具有可见性修饰符.Kotlin中的可见性修饰符共四种.即public.protected.private.internal.在不同的场景声明不同的修饰符都有不同的可见性.下面详解介绍不同的修饰符在不同场景的范围. 这里值得注意的是,属性的Getter()函数的可见性具有与属性相同的可见性. 目录 一. 四种修饰符的说明 public修饰符表示 公有 .此修饰符的范围最大.当不声明任何修饰符时,系统会默认使用此修饰符. int

C语言printf格式化输出修饰符详解

转换说明 输出 %a,%A 浮点数.十六进制数和p-计数法(C99) %c 一个字符 %d 有符号十进制数 %e,%E 浮点数,e计数法 %f 浮点数,十进制计数法 %g,%G 根据数值不同自动选择%f或%e,%e格式在指数小于-4或者大于等于精度时使用 %i 有符号十进制整数(与%d相同) %o 无符号八进制整数 %p 指针 %s 字符串 %u 无符号十进制数 %x,%X 使用十六进制数0f的无符号十六进制整数 %% 打印一个百分号 prinf()修饰符 修饰符 意义 标志 五种标志将在后面的

php正则表达式修饰符详解

preg_match_all("/(.+)<\/form>/isU" , $string, $result); 这里/ 后面加了 3个修饰符 i 是 不区分大小写的匹配 s 是 带有换行的 匹配 U 是非贪婪模式.匹配最少部分. 修饰符:i :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是一样的.m:默认的正则开始"^"和结束"$"只是对于正则字符

PHP正则表达式模式修饰符详解

PHP模式修饰符又叫模式修正符,是在正则表达式的定界符之外使用.主要用来调整正则表达式的解释,提扩展了正则表达式在匹配.替换等操作的某些功能,增强了正则的能力.但是有很多地方的解释都是错误的,也容易误导别人,所以今天我把这个文档整理出来,供大家参考. 模式修正符号 功能描述 i 在和正则匹配是不区分大小写 m 将字符串视为多行.默认的正则开始“^”和结束“$”将目标字条串作为一单一的一“行”字符(甚至其中包括换行符也是如此).如果在修饰符中加上“m”,那么开始和结束将会指点字符串的每一行的开头就

Java-004-变量类型和修饰符详解

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC"; color: #000000 } Java的变量 Java中主要有如下几种类型的变量:局部变量.类变量(静态变量).成员变量(非静态变量) 变量其实是java中的一个最基本的单元,也就是内存中的一块区域, Java中的变量有四个基本属性:变量名,数据类型,存储单元和变量值 ◆变量名:合法的标识符 ◆变量的数据类型:可以是基本类型和引用类型(必须包含类型)