首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

子类是否继承父类的私有成员呢解决方法

2012-06-14 
子类是否继承父类的私有成员呢子类是否继承了父类的私有成员,怎么才算是继承了,怎么算没有继承?比如:父类P

子类是否继承父类的私有成员呢
子类是否继承了父类的私有成员,怎么才算是继承了,怎么算没有继承?

比如:父类Parent有个私有成员,有个受保护的方法,在该方法中打印出这个私有成员。

然后子类 Child继承Parent,如果在其他类,比如包含主函数的类中,实例化Child,这时这个实例化对象 无法调用Parent的受保护的方法。

C# code
    class Parent    {        private string privateName;        public string publicName;         //这个方法的访问修饰符改为public的话,可以在其他类中由子类调用该方法,但是也会报错        protected void GetName(string nameFromOut)        {            privateName = nameFromOut;            Console.WriteLine(privateName);        }    }    class Child : Parent    {    }


C# code
    class Program    {        public static void Main(string[] args)        {            Child c = new Child();            //这里无法调用其父类的受保护的方法            Console.ReadKey();        }    }


而如果在 子类内部实例化一个 子类的对象,再由这个对象 调用父类的方法,则是可以访问的父类的私有成员,如:
C# code
    class Child : Parent    {        public void GetParentPrivateName()        {            Child c = new Child();            c.GetName("Tom");            publicName = "Jerry";            Console.WriteLine(publicName);        }      }

难道好比 父亲有2W大洋的私房钱,儿子是无权动用的,但是儿子可以趁老子不在家的时候 拿来花?

[解决办法]
子类可以访问protected成员,Child类里面可以直接写this.GetName()。而Main方法是属于Program类,因此不能访问非public的方法。
[解决办法]
除非用public来修饰,否则使用正常方法是没法访问protected成员的。
[解决办法]


public:访问不受限制。
 
protected: 访问仅限于包含类或从包含类派生的类型。也就是说只能自己调用或者被其儿孙调用,
不能被其他类调用。
 
internal:访问仅限于当前程序集。


 

热点排行