




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、描述/品种/构造函数,直接给品种赋值修饰符的理解访问权限存在的意义,各种访问权限的作用,在代码中灵活应用访问权限。【出现频率】【解答】1private修饰private修饰符用于设置类或类成员的访问权限仅为所属类的内部,private也被称为私有修饰符。某些时候需要访问私有类成员时,可通过get和set访问器读取或修改。本例通过对类的私有成员及私有类的访问,展示private修饰符的保护作用。在D:webNET目录下新建一个程序文件,并命名为ModPrivate.cs,编写代码如代码4.3所示。代码4.3private修饰符示例:ModPrivate.csusingSystem;classMo
2、dPrivatestaticvoidMain(Stringargs)Dogdg=newDog(可卡”);Console.WriteLine(”一只小狗创建成功!”);Console.WriteLine(”这只++的品种是:+dg.type);/由于参数类型为字符串的构造函数是私有的,这里不能直接创建实例对象/Tigertg=newTiger(”华南虎”);由于Tiger类所嵌套的ZooTiger类是私有类,所以无法直接访问/Tiger.ZooTigertz=newTiger.ZooTiger();Tigertg=newTiger(true);参数类型为布尔型的构造函数可创建Tig
3、er类的对象Console.WriteLine(n一只老虎创建成功!);Console.WriteLine(”这只”++的品种是华南虎吗?”+tg.ischinatiger);classDog/狗类名称internalstringname=小狗;privatestring_type;internalDog(stringtp)this._type=tp;internalstringtype/type变量,get访问器获取私有成员_type的值getreturnthis._type;classTiger/虎类名称internalstringname=老虎;/品种/是否为华南虎/构造函
4、数,直接给品种赋值privatestring_type;privatebool_ischinatiger;privateTiger(stringtp)this._type=tp;internalTiger(boolchinatiger)构造函数,直接给_ischinatiger赋布尔型值this._ischinatiger=chinatiger;internalstringischinatiger/ischinatiger变量,get访问器获取返回值get/由于同属于Tiger类的内部,所以可创建ZooTiger私有类的对象ZooTigerzt=newZooTiger();/返回字符串,内容为
5、私有成员_ischinatiger的值和ZooTiger的对象的name值returnthis._ischinatiger+(++);privateclassZooTigerinternalstringname;internalZooTiger()=动物园的老虎;2protected修饰符protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部。本例通过对类的私有成员及私有类的访问,展示private修饰符的保护作用。在D:webNET目录下新建一个程序文件,并命名为ModProtected.cs,编写代码如代码4.4所示。代码4.4prote
6、cted修饰符示例:ModProtected.csusingSystem;classModProtectedstaticvoidMain(Stringargs)Console.WriteLine(”请输入所需创建老虎对象的品种(如东北虎、华南虎、孟加拉虎等):);stringinput=Console.ReadLine();读取用户输入,并存储于input变量stringnm,tp;if(input!=华南虎)如果input变量存储的不是华南虎字符串Tigertg=newTiger(input);创建Tiger类的对象,并传递input变量的值nm=;将tg对象的name属性赋值
7、给nm变量tp=tg.type;/将tg对象的type属性赋值给tp变量elseChinaTigertg=newChinaTiger();创建ChinaTiger类的对象将tg对象的name属性(继承于父类中声明为protected的属性)赋值给nm变量nm=;将tg对象的type属性(继承于父类中声明为protected的属性)赋值给tp变量tp=tg.type;Console.WriteLine(n一只0创建成功!,nm);Console.WriteLine(”这只0的品种是:1,nm,tp);classTiger/虎类名称protectedstring_name=老虎;pr
8、otectedstring_type;/品种internalTiger()/无参数构造函数internalTiger(stringt)/构造函数,直接给品种赋值this._type=t;internalstringname/name变量,get访问器获取返回值getreturnthis._name;返回字符串,内容为私有成员name的值internalstringtype/type变量,get和set访问器获取返回值或写入值getreturnthis._type;返回字符串,内容为私有成员_type的值setthis._type=value;为私有成员_type赋值classChinaTige
9、r:Tiger/华南虎类名称internalChinaTiger()/构造函数,直接给品种赋值this._type=华南虎;直接赋值华南虎字符串给父类中继承的_type属性3internal修饰符interna1修饰符修饰的类或类成员的访问权限为同一程序集内部,C#默认的类访问修饰符即为internal前面2个示例中,需要供类外部代码访问的成员都使用了internal修饰符,因为这些类都处于同一程序集中。4public修饰符public修饰符则为公共访问权限,对代码的访问没有任何限制。大多数情况下须谨慎使用public修饰符,因为滥用将影响类的封装性,并且带来安全隐患。以下为代码的运行结果:在
10、命令行下编译ModPrivate.cs后,执行ModPrivate程序,其效果如图4.5所示。图4.5private修饰符示例从本例代码中可知,ZooTiger类无法在类的外部直接访问,所有的私有成员只能在类的内部访问,本例采用了get访问器访问了小狗和老虎的品种,并创建了ZooTiger私有类的对象。有的读者可能会迷惑,如果同时使用get和set访问器,private修饰符意义何在?其实很多程序中确实有这样的做法,这样做向类的外部屏蔽了私有成员的实现方法,同时也隐藏了私有成员的实际名称,有利于封装性。例如本例,get访问器中有2步操作,而外界无法获知。在命令行下编译ModProtected.
11、cs后,执行ModProtected程序,其效果如图4.6所示。图4.6protected修饰符示例本例接收用户的输入,当输入值为“华南虎”时,创建ChinaTiger类的对象,并通过构造函数赋值“华南虎”字符串给type字段。_type字段声明中使用了protected修饰符,所以在Tiger类的子类(ChinaTiger类)中可被直接访问。注意:即使派生类和基类在不同程序集中,派生类仍可访问基类的protected修饰符成员。读者必须清楚的一点是,派生类继承了所有基类的成员,只是无法直接访问基类的private成员,但可访问protected成员。【分析】面向对象编程的特征之一就是封装性,
12、而类就是封装性的典型体现。在生活中,人们不需要知道电器的内部构造,但是能很容易地使用电器,这就是封装性。在项目中需要编写很多功能类,在程序运行时只需要使用类所提供的功能,大部分类内部的代码实现需要封装,拒绝外部访问。这样大大增加了类的内部代码安全和稳定性,多个功能类之间也减少了互相干扰的可能。访问权限修饰符即可将类及类的成员划分多种安全级别,根据不同需要设置访问权限。internal和public访问修饰符是需要谨慎选择的,多数情况下应该尽量使用internal访问修饰符。还有一种访问修饰符,即protectedinterna1修饰符,可在子类中或同一程序集内被访问。如果要声明成员只能被同一程
13、序集内的派生类(子类)访问,则应首先设置所属类为internal,成员设置为protected。c#中public,private,protected,internal的区别收藏在子类中我们可以通过血罪关键字访冋基类的成員:调用基类上已被其他方法重写的方法.指定创建派生类实例时应调用的基类构造函数。基类访问只能在构造函数、实例方法或实例属性访问器中进行。以静态方法中使用b逊关键字是错误的;心z?再重温下访冋僵饰符访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性。类的继承中有四个i方问修饰符:pubhcprotettedinternalprivate。仅屈这些方冋僅怖符可扌眞定釘列五个
14、可彳方问性级另jpublicprojectedinternalinternalprotectedprivateo声明的可访问性意勲h.publici方冋不受限制dprotected访问仅限于包含类或从包含类派生的类型荒internal访问仅限于当前项目。protectedinternal访问仅限于从包含議生的当前项目或美型private访问仅限于包含类型乞msdn的解释如下:internal指的是同一个程序集,内部成员和类型才是可以访问的.内部访问通常用于基于组件的开发,因为它使一组组件能够以私有方式进行合作,而不必向应用程序代码的其余部分公开一个成员或类型只能有一个访问修饰符,使用prote
15、ctedinternal组合时除外。命名空间上不允许使用访问修饰符。命名空间没有访问限制。根据发生成员声明的上下文,只允许某些声明的可访问性。如果在成员声明中未指定访问修饰符,则使用默认的可访问性。不嵌套在其他类型中的顶级类型的可访问性只能是internal或public。这些类型的默认可访问性是internal。嵌套类型是其他类型的成员,它们可以具有下表所示的声明的可访问性。属于默认的成员可访问性该成员允许的声明的可访问性无无访问权限Solutionprivateinti;internalintj;/ClassDClassEderivedfromAC#的细节(二)-修饰符七月6th,2008
16、写在最前面的话:C#的细节是我当初学习C#时候,做的一些学习笔记的整理,现在回头看来这些都是非常浅显的知识,是C#非常细节的地方,同时也是不能忽略的地方,”细节决定成败“,也许有些严重。我希望把这些整理出来,可以给初学者一个参考,也给自己一个温故知新的机会。高手就不必花时间来看了。;-)在c#的中修饰符的概念,最让初学者有些头痛了,理解起来也不是想象中那么简单,关键是不要搞乱了。c#的修饰符大概分3类:1、访问型修饰符,就是控制所修饰成员的可访问域,包括:public、private、protected、internal和protectedinternal。其中只能protectedinter
17、nal组合,其他都不能。public:访问不受限制。private:访问仅限于包含类型。只有包含该成员的类可以存取.protected:访问仅限于包含类或从包含类派生的类型。只有包含该成员的类以及继承的类可以存取.Internal:访问仅限于当前程序集。只有当前项目(工程)可以存取.protectedinternal:访问仅限于当前程序集或从包含类派生的类型。上面的概念好像很绕口。不过在如果你对面向对象大致了解的话,理解这些概念并不难,需要明确两个东东:程序集和项目。这里不详细讨论程序集和项目(如果你想全面了解有关程序集,项目,命名空间等东东,可以去看看这里),你可以大致理解,一个项目可以是一
18、个程序集。public、private、proteced我觉得非常比较好理解,麻烦点就是Internal,只能在一个项目中使用,不能跨项目调用,只能自己的项目内使用,即使是子类也不能访问。以上的代码表明Internal是不能跨项目访问的。对于protectedinternal简单些理解,就是protected和internal的并集。protected就只能被子类内部所访问,于是它们的并集就是:同一个项目内或者子类内部可以访问。如果既不是同一程序集也不是子类,就无法访问。如下面的代码所示:2、类修饰符:abstract:标识一个类只能作为其它类的基类.sealed:标识一个类不能被继承.partial:局部类。将你的class分为多个部分,编译器会将多个部分拼合在一起。关于局部类部分你可以看看这里3、成员修饰符:abstract:指示该方法或属性没有实现.const:指定域或局部变量的值不能被改动.event:声明一个事件.extern:指示方法在外部实现.override:对由基类继承成员的新实现.readonly:指示一个域只能在声明时以及相同类的内部被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 1 Meeting new people Lesson 5(教学设计)-2024-2025学年人教PEP版(2024)英语三年级下册
- 2 我学习我快乐 教学设计-2024-2025学年道德与法治三年级上册统编版
- 8安全记心上 第一课时 平安出行(教学设计)-部编版道德与法治三年级上册
- 股份合同范本
- 会所餐饮合同范本
- 菜地整治合同范本
- 出包合同范本
- 入股服装合同范本
- 8《小心火灾》教学设计-2024-2025学年三年级上册综合实践活动鲁科版
- 纺织合同范本
- 《道路建筑材料绪论》课件
- 2025年湖南现代物流职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 第二十章手术减肥及体形塑造美容手术美容外科学概论讲解
- 2025年苏州卫生职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 履带式剪叉高空作业平台安全操作规程
- 《水稻育秧技术新》课件
- 2024-2025年第一学期初中德育工作总结
- 围手术期手术患者护理要点
- 男科话术完整版本
- 统编版五年级道德与法治下册全册完整课件
- 直系亲属关系证明(存根)(共1页)
评论
0/150
提交评论