在C#.NET中子类是继承父类的所有属性和方法,包括私有的(private),只是在子类中不能被访问而已。这里涉及到一个概念VTM(虚拟方法表),一个类的所有方法都会在VTM中,包括继承自父类的私有方法,只是不能访问。给你个例子你就会发现父类中的私有字段是可以继承的:- class Base
- {
- private int m = 2;
- public int GetM(Child c)
- {
- return c.m;
- }
- public int GetM(Base b)
- {
- return b.m;
- }
- public Base()
- { }
- public Base(int m)
- { this.m = m; }
- }
- class Child : Base
- {
- private int m = 1;
- public new int GetM(Child c)
- {
- return c.m;
- }
- public Child(int m)
- : base(m)
- { this.m = 4; }
- }
- class test
- {
- public static void Main()
- {
- Base b = new Base();
- Child c = new Child(3);
- Console.WriteLine(b.GetM(c));
- Console.WriteLine(c.GetM(c));
- Console.WriteLine(b.GetM((Base)c));
- Console.ReadKey();
- }
- }
复制代码 执行的结果是3,4,3
VTM的知识不太好说,你自己查阅一下,通过我给你的例子是可以发现私有内容也是会被继承的。
但是你只要记住私有的内容在子类中不能被访问就好。
如果理解不了就理解成私有内容不能被继承吧,但这个说法有缺陷的。 |