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
       );
              

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值