关闭

访问修饰符权限

117人阅读 评论(0) 收藏 举报
    • C#共有五种访问修饰符:public、private、protected、internal、protected internal。作用范围如下表:
访问修饰符 说明
public 公有访问。不受任何限制。
private 私有访问。只限于本类成员访问,子类,实例都不能访问。
protected 保护访问。只限于本类和子类访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问

C#成员类型的可修饰及默认修饰符如下表:

成员类型 默认修饰符 可被修饰符
enum public none
class private public、protected、internal、private、 
protected internal
interface public none
struct private public、internal、private

下面我就结合实例,讲一下public、private、protected、internal和protected internal的作用范围。

如下代码:

    1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Text;
   4:   
   5:  namespace AccessModifier
   6:  {
   7:      public class AccessModifierClass
   8:      {
   9:          public string GetPublicString()
  10:          {
  11:              return "Public String";
  12:          }
  13:   
  14:          protected string GetProtectedString()
  15:          {
  16:              return "Protected String";
  17:          }
  18:   
  19:          private string GetPrivateString()
  20:          {
  21:              return "Private String";
  22:          }
  23:   
  24:          internal string GetInternalString()
  25:          {
  26:              return "Internal String";
  27:          }
  28:   
  29:          protected internal string GetProtectedInternalString()
  30:          {
  31:              return "Protected Internal String";
  32:          }
  33:   
  34:          void AvailableAccessModifier()
  35:          {
  36:              this.GetPublicString();
  37:              this.GetPrivateString();
  38:              this.GetInternalString();
  39:              this.GetProtectedInternalString();
  40:              this.GetProtectedString();
  41:          }
  42:      }
  43:   
  44:      public class TestAccessModifierClass1
  45:      {
  46:          void AvailableAccessModifier()
  47:          {
  48:              AccessModifierClass item = new AccessModifierClass();
  49:              item.GetPublicString();
  50:              item.GetInternalString();
  51:              item.GetProtectedInternalString();
  52:          }
  53:      }
  54:   
  55:      public class TestAccessModifierClass2 : AccessModifierClass
  56:      {
  57:          void AvailableAccessModifier()
  58:          {
  59:              AccessModifierClass item = new AccessModifierClass();
  60:              item.GetPublicString();
  61:              item.GetInternalString();
  62:              item.GetProtectedInternalString();
  63:              base.GetProtectedString();
  64:          }
  65:      }
  66:  }

AccessModifierClass是我们的访问修饰符类,里面有五种访问修饰符方法,可见在AccessModifierClass类里面的AvailableAccessModifier()方法可以访问所有的方法。

在TestAccessModifierClass1类中的AvailableAccessModifier()方法只能访问public、Internal和Protected Internal方法。

TestAccessModifierClass2类继承自AccessModifierClass类,所以它的AvailableAccessModifier()方法可以访问public,internal,protected和protected internal方法。

在新建一个工程,且引用AccessModifierClass类的dll,代码如下:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Text;
   4:  using AccessModifier;
   5:   
   6:  namespace AccessModifierApp
   7:  {
   8:      public class AccessModifierAppClass1 
   9:      {
  10:          void AvailableAccessModifier()
  11:          {
  12:              AccessModifierClass item = new AccessModifierClass();
  13:              item.GetPublicString();
  14:          }
  15:      }
  16:   
  17:      public class AccessModifierAppClass2 : AccessModifierClass
  18:      {
  19:          void AvailableAccessModifier()
  20:          {
  21:              AccessModifierClass item = new AccessModifierClass();
  22:              item.GetPublicString();
  23:              base.GetProtectedString();
  24:              base.GetProtectedInternalString();
  25:          }
  26:      }
  27:  }

 

AccessModifierAppClass1类的AvailableAccessModifier()方法只能访问public方法。

AccessModifierAppClass2类继承自AccessModifierClass类,所它的AvailableAccessModifier()方法可以访问public、protected和protected internal方法。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

JAVA中的权限修饰符

Java中修饰符总结: 访问控制修饰符 作用: 用于控制被修饰变量、方法、类的可见范围。 public的访问级别是最高的,其次是protected、默认和private 成员变量和成员方法可以...
  • Xk632172748
  • Xk632172748
  • 2016-06-24 20:11
  • 21719

Java访问权限修饰符

1、Class类的访问权限:  public:可以供所有的类访问。  默认:默认可以称为friendly但是,java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++。默认的访...
  • keda8997110
  • keda8997110
  • 2013-03-08 10:59
  • 1869

C#中。简述 private、 protected、 public、 internal 修饰符的访问权限

private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal:...
  • u012468523
  • u012468523
  • 2014-07-28 16:15
  • 1180

c#五种访问修饰符作用范围

C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal
  • huwei2003
  • huwei2003
  • 2016-05-24 21:34
  • 3209

关于JAVA里面的内部类的一些理解

关于JAVA里面内部类的全面分析和理解
  • baidu_28312631
  • baidu_28312631
  • 2015-05-19 22:35
  • 562

关于访问修饰符和变量的作用域

关于访问修饰符。也就是用来控制其他的类对类、成员变量、成员方法的访问权限,我们有四种访问修饰符,分别是公共的(public),受保护(protected),缺省的和私有的(private),这四种权限...
  • y15883626567
  • y15883626567
  • 2015-04-30 11:49
  • 467

java中类成员如果没有修饰符其访问权限

如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,用friendly来表示,注 意friendly不是Java中的关键字,这里是个人喜欢的方式用它表示而已。同一个包内其它类可以访问,但包...
  • Senssic
  • Senssic
  • 2013-05-08 12:49
  • 1629

Java:构造函数的访问修饰符

构造方法可以处于public、protected、private和默认四种访问级别之一。 public public这里就不多说了 private 当构造方法为private级别时,意味着只能...
  • wangyanguiyiyang
  • wangyanguiyiyang
  • 2015-11-17 10:31
  • 2372

封装与访问权限修饰符

一.java的四种访问权限 1.几个注意的细节: 类的访问权限只有两种:public和default(默认包访问权限) java编译单元概念:一个.java文件是一个编译单元,每个编译单元最多只能有...
  • zhuguangzhou
  • zhuguangzhou
  • 2016-08-19 18:54
  • 761

Thinking In Java笔记(第六章 访问权限控制)

第六章 访问权限控制简介    Java提供了访问权限修饰词,供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问权限控制的等级,从最大权限到最小权限一次为:public、protect...
  • Jing_Unique_Da
  • Jing_Unique_Da
  • 2015-05-11 11:41
  • 1490
    个人资料
    • 访问:12799次
    • 积分:192
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:16篇
    • 译文:1篇
    • 评论:1条
    最新评论