c#访问修饰符
2013-03-31 12:58
169 查看
声明的可访问性 | 含义 |
public | 访问不受限制。 |
protected | 访问仅限于包含类或从包含类派生的类型。 |
internal | 访问仅限于当前程序集。 |
protected internal | 访问仅限于从包含类派生的当前程序集或类型。 |
private | 访问仅限于包含类型。 |
同一程序集(同一个工程下):
public class BaseCls { private int private_a = 0; protected int protected_b = 1; internal int internal_c = 2; protected internal int pi_d = 3; public int public_e = 4; private int get_private() { return 5; } protected int get_protected() { return 6; } internal int get_internal() { return 7; } protected internal int get_pi() { return 8; } public int get_public() { return 9; } } public class inheritCls : BaseCls { public inheritCls() { Console.WriteLine("同一程序集中继承类访问权限测试"); Console.WriteLine("private,intenal字段不被继承,protected,protected intenal,public被继承"); Console.WriteLine(this.protected_b); Console.WriteLine(this.pi_d); Console.WriteLine(this.public_e); Console.WriteLine("private方法不被继承,protected,internal,protected intenal,public被继承"); Console.WriteLine(this.get_protected()); Console.WriteLine(this.get_internal()); Console.WriteLine(this.get_pi()); Console.WriteLine(this.get_public()); } } public class Test { public Test() { Console.WriteLine("同一程序集中类的访问权限测试"); BaseCls baseCls = new BaseCls(); Console.WriteLine(baseCls.pi_d); Console.WriteLine(baseCls.public_e); Console.WriteLine(baseCls.get_internal()); Console.WriteLine(baseCls.get_pi()); Console.WriteLine(baseCls.get_public()); inheritCls cls = new inheritCls(); Console.WriteLine(cls.pi_d); Console.WriteLine(cls.public_e); Console.WriteLine(cls.get_internal()); Console.WriteLine(cls.get_pi()); Console.WriteLine(cls.get_public()); } }
再新建一个工程:
class ClassTT : BaseCls { public ClassTT() { Console.WriteLine("不同一程序集中继承类访问权限测试"); Console.WriteLine("private,intenal字段不被继承,protected,protected intenal,public被继承"); Console.WriteLine(this.protected_b); Console.WriteLine(this.pi_d); Console.WriteLine(this.public_e); Console.WriteLine("private,intenal方法不被继承,protected,internal,protected intenal,public被继承"); Console.WriteLine(this.get_protected()); Console.WriteLine(this.get_pi()); Console.WriteLine(this.get_public()); } } public class TestTT { public TestTT() { Console.WriteLine("不同程序集中类的访问权限测试"); BaseCls baseCls = new BaseCls(); //Console.WriteLine(baseCls.pi_d); Console.WriteLine(baseCls.public_e); //Console.WriteLine(baseCls.get_internal()); //Console.WriteLine(baseCls.get_pi()); //Console.WriteLine(baseCls.get_public()); inheritCls cls = new inheritCls(); //Console.WriteLine(cls.pi_d); Console.WriteLine(cls.public_e); //Console.WriteLine(cls.get_internal()); //Console.WriteLine(cls.get_pi()); //Console.WriteLine(cls.get_public()); ClassTT clsTT = new ClassTT(); Console.WriteLine(clsTT.public_e); Console.WriteLine(clsTT.get_public()); } } }
以上的例子主要说明同一程序集和不同程序集之间的继承和调用时的访问权限。总的来说多动手来理解。
相关文章推荐
- C#几种访问修饰符理解
- C#访问修饰符比较
- C# 访问修饰符说明
- c# 访问修饰符
- C#提供了5种访问修饰符。
- 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)
- C#的访问修饰符
- C#访问修饰符
- C#封装、访问修饰符
- C#访问修饰符
- C#封装访问修饰符
- C#中方法、类等的默认访问修饰符
- [C#] - C#中类的可访问修饰符(转http://hi.baidu.com/ztf704/blog/item/6050aaaf013482cf7dd92a36.html)
- C#阶段提高之---访问修饰符
- c#中类的访问修饰符
- C# 中的四种访问修饰符
- C#共有五种访问修饰符:public、private、protected、internal、protected internal。作用范围如下表:
- c#几种访问修饰符的用法
- C#的访问修饰符
- 黑马程序员—C#访问修饰符 public、private、protected 和 internal