`

C#面向对象学习笔记(二)

阅读更多

《C#高级编程》第四版

 

C#中访问修饰符(第4章 继承)

 

修饰符:应用于类型或成员的关键字,通过它可以指定方法的可见性

1.可见性修饰符
下表修饰符确定了是否允许其它代码访问某一项

修饰符                         应用于                                    说明
public                      所有的类型或成员                       任何代码均可访问该方法
protected                类型和内嵌类型的所有成员           只有派生的类型能访问该方法
internal                   所有的类型或成员                       只能在包含它的程序集中访问该方法
private                    类型和内嵌类型的所有成员           只能在它所属的类型中访问该方法
protected internal   类型和内嵌类型的所有成员           只能在包含它的程序集和派生类型的代码中访问该方法


对于C#类的限制修饰符的总结:
(1)public可以被任意存取
(2)protected只可以被本类和其继承子类存取
(3)internal 只可以被本组合体(Assembly)内的所有类存取(C#中类的默认访问修饰符)
组合体:是C#语言中类被组合后的逻辑单位和物理单位(编译后的扩展名一般是.dll或.exe)
(4)protected internal C#中唯一的一种组合限制修饰符,只可以被本组合体内的所有的类和这些类的继承子类所存取
(5)private只可以被本类所存取

注意:不能把类型定义为protected、private和protected internal
因为这些修饰符对于包含在命名空间中的类型来说是没有意义的

所以:命名空间或编译单元内的类只有public和internal两种修饰

但在嵌套类中,可以用这些修饰符定义,因为此情况下类型也具有成员的状态
如:
public class OuterClass
{
 protected class InnerClass
 {
  .....
 }

}
在嵌套类中,内部类总是可以访问外部类的所有成员

 

 

2.其他修饰符
修饰符                应用于                         说明
new                  函数成员                      派生类方法隐藏基类方法
static                类、所有成员                成员不在类的具体实例上执行(static类中只能包含static成员)
virtual               函数成员                      成员可以由派生类重写
abstract            类、函数成员                抽象,定义成员签名,没有提供实现代码
override            函数成员                      成员重写基类的虚拟或抽象成员
sealed              类、函数成员                 对于类则表示其它类不能从该类继承
                                                           成员重写了继承的虚拟成员,但继承该类的任何类都不能再重写该成员
                                                           sealed override  必须一起使用

 


extern修饰符:用于声明在外部实现的方法(成员在外部用另一种语言实现)
常见用法是在使用Interop服务调入非托管代码时与DllImport属性一起使用;
在这种情况下,该方法还必须声明为static
如:
使用c#程序修改ftp用户密码的操作的代码中:
[DllImport("WinInet.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern IntPtr InternetConnect(
       IntPtr hInternet,
       [MarshalAs(UnmanagedType.LPTStr)] string serverName,
       InternetPort serverPort,
       [MarshalAs(UnmanagedType.LPTStr)] string username,
       [MarshalAs(UnmanagedType.LPTStr)] string password,
       InternetService service,
       int flags,
       IntPtr context
       );
              

分享到:
评论

相关推荐

    C#面向对象学习心得.txt

    C#面向对象学习心得.txt

    c#面向对象基础学习笔记-配套传智播客视频

    本txt为传智播客视频第2部分C#面向对象 所对应的笔记整理,参考视频学习,学习效率更高。视频可在 http://www.verycd.com/topics/2857178/ 免费下载,有需要的给我留言

    Visual C#学习笔记光盘

    Visual C#学习笔记光盘 简介:本书由浅入深地讲解Visual C# 2005编程知识,全书内容分为6篇,共27章,第一篇介绍Visual Studio 2005开发环境和C#基础,其中包括Visual C# 2005简介,C#语言基础,面向对象编程...

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第二个包)

    全书共包括21章,分别介绍了以下内容: 开发环境搭建、语法基础、面向对象编程、类型转换、字符串处理与数学运算、控制台应用程序、变体的应用、集合与泛型、调试与单元测试、Lambda表达式、LINQ查询语句、Windows...

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第一个包)

    全书共包括21章,分别介绍了以下内容: 开发环境搭建、语法基础、面向对象编程、类型转换、字符串处理与数学运算、控制台应用程序、变体的应用、集合与泛型、调试与单元测试、Lambda表达式、LINQ查询语句、Windows...

    C#学习笔记

    我个人觉得面向对象是本本主义、洁癖的体现、是重构后的最后归属、它可能会矫情、在市场变化老板着急产品狭隘的情况下 快速制作快速上线才是王道,面向对象的基础是对事物的详尽认知,短时间内能做到吗 不好做到,...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    面向对象的范式

    C#学习笔记,利用面向对象的方式进行操作数据库以及进行学习使用

    c#学习笔记2

    C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它...

    C#中面向对象编程机制之多态学习笔记

    主要介绍了C#中面向对象编程机制之多态学习笔记,本文总结了个人对多态的理解以及接口多态、继承多态等内容,并给出了代码示例,需要的朋友可以参考下

    C#中面向对象编程机制之继承学习笔记

    主要介绍了C#中面向对象编程机制之继承学习笔记,本文给出一个简单子实例讲解C#中的继承,并讲解了一些C#继承的知识技巧,需要的朋友可以参考下

    c#学习笔记

    C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它...

    C#ch04笔记1.jpg

    java面向对象学习编程笔记核心整理

    C#ch03笔记1.jpg

    java面向对象学习编程笔记核心整理

    C#ch06笔记2.jpg

    java面向对象学习编程笔记核心整理

    C#ch06笔记1.jpg

    java面向对象学习编程笔记核心整理

    C#ch03笔记3.jpg

    java面向对象学习编程笔记核心整理

    C#ch07笔记1.jpg

    java面向对象学习编程笔记核心整理

    15_王文峰C#ch09笔记1.jpg

    java面向对象学习编程笔记核心整理

Global site tag (gtag.js) - Google Analytics