c#发展

注册

 

发新话题 回复该主题

在NET中,C访问修饰符决定类和成员 [复制链接]

1#
白癜风医院石家庄哪家好 http://www.zherpaint.com/m/
C#核心开发-第15单元-接口和继承-第5节:访问修饰符C#核心开发-访问修饰符1.访问修饰符在C#中,访问修饰符用于控制接口/类/方法/属性等访问权限。常用的访问修饰符有public/private/protected/internal等。1.1.Public公开访问在C#中,public是最常用的访问修饰符,表示公共访问,公有访问,不受任何限制,public关键字可以用在类和类成员上。公共访问是允许的最高访问级别,对访问公共成员没有限制。如果编写的类/方法/字段/属性需要在其它类中被公开访问,则就使用public访问修饰符:如下图是一个给类和方法都使用了public访问修饰符:定义公开访问的类和成员-图1public访问修饰符使用的完整代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceYidosoft.Edu.Csharp.Inherit{publicclassDoctor{publicvoidCure(stringname,stringtype){Console.WriteLine($name={name},type={type});Console.ReadKey();}}}在图1中,定义的类Doctor使用了public访问修饰符,且该类内的Cure()方法的访问修饰符也使用了public访问修饰符。这说明Doctor类和其中的Cure()方法可以在任何地方访问,如下图所示:访问public修饰的类和成员-图2在Program类中访问其它类和成员的C#代码如下:namespaceYidosoft.Edu.Csharp.Inherit{classProgram{staticvoidMain(string[]args){Doctordoctor=newDoctor();doctor.Cure(小强,感冒);}}}从此代码中我们发现,Doctor类和它的成员已在Program类中访问到了,这是public所起的作用。在C#中,也可以简单的理解为public访问修饰符可以在任何地方访问。1.2.Private私有访问在C#中,private访问修饰符表示私有访问,只限于本类(所在的类)访问,子类和实例都不能访问。private访问修饰符不能用于类上,只能用于类的成员:方法/字段/属性等。如下图所示:使用private修饰方法-图3在图3中,将Cure()方法访问修饰符由原来的public修改为private。如下修改后的C#代码:publicclassDoctor{privatevoidCure(stringname,stringtype){Console.WriteLine($name={name},type={type});Console.ReadKey();}}然后,再在外部类中访问一下,如下图所示:private不可在外部访问-图4此时在图4中,在外部的Program类中,Cure()方法不可访问,因为private在实例类中不可访问。如果我们创建的基类,某此成员不想在子类中访问,则可以使用private修饰成员。下图是基类中定义的方法和属性:私有属性-图5在图5中,Person是基类,其中Name属性是private修饰的,是私有的,其它的都是public公有的。基类的完整代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceYidosoft.Edu.Csharp.Inherit{///summary///基类:人类////summarypublicclassPerson{//虚方法publicvirtualdoubleTotal(intsum,doubleprice){doubled=sum*price;returnd;}//姓名protectedstringName{get;set;}//年龄publicintAge{get;set;}//性别publicboolSex{get;set;}}}我们知道,private修饰的成员不能在子类中访问,如下图在子类中访问:private不能在子类中访问-图6在图6中,Student子类继承了Person基类,但是由于Name属性是私有的,所以不能在Student子类中访问。1.3.Protected受保护访问在C#中,protected称为保护访问,只限于本类和子类访问,实例不能访问。protected也是只能在类成员上使用,不能在类和接口上使用。受保护的属性-图7在图7中,Person是基类,其中的Name属性成员使用了protected访问修饰符,是保护访问,只能在本类和子类中访问,不能在实例中访问:受保护的成员-图8图8是保护访问在子类中访问,这是正常的。Student类的代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceYidosoft.Edu.Csharp.Inherit{///summary///派生类:学生类////summarypublicclassStudenterson{//学校名称。publicstringSchoolName{get;set;}//显示。publicvoidShow(){stringstrSex=base.Sex==true?男:女;Console.WriteLine($姓名:{base.Name},年龄:{base.Age},性别:{strSex},学校:{SchoolName});Console.ReadKey();}}}再看一下实例访问,如下图所示:访问属性-图9在图9中,实例化了Person类,其中的Name属性是找不到的,因为它受保护,不能在实例中访问。C#中的访问修饰符如下:C#常用的访问修饰符-图10注意:在C#中,如果定义的类省略了访问修饰符,则默认是internal,而类的成员:属性、方法、字段、如果省略了访问修饰符,则默认是private。C#深入编程-线上视频图文课堂配套课后技能作业+理论考试+源码淘宝¥购买已下架
分享 转发
TOP
发新话题 回复该主题