子类是否继承父类的私有成员呢,该如何处理

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

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

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


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

    class Child : Parent
    {
    }



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


而如果在 子类内部实例化一个 子类的对象,再由这个对象 调用父类的方法,则是可以访问的父类的私有成员,如:

    class Child : Parent
    {
        public void GetParentPrivateName()
        {
            Child c = new Child();
            c.GetName("Tom");
            publicName = "Jerry";
            Console.WriteLine(publicName);
        }  
    }

难道好比 父亲有2W大洋的私房钱,儿子是无权动用的,但是儿子可以趁老子不在家的时候 拿来花?
------解决方案--------------------
不要把继承想的太复杂了,原则很简单:private只能类自己访问,protected类和子类能访问,public谁都可以访问。还有问题吗
------解决方案--------------------
这样理解 父亲有2W大洋的私房钱,他授权儿子能用,别人不能用,就用 protected 修饰这笔钱,如果外人也能用,就 public 修饰,如果只有自己能用,其他人都不行,就 private 修饰了。
------解决方案--------------------
而在 public static void Main(string[] args) 里去调用就等于外人问儿子要那笔钱,当然不能给他
------解决方案--------------------
继承的!
首先明确的说明,子类继承父类所有的属性和方法,包括私有的,只是在子类中不能被访问而已。

------解决方案--------------------

引用:
继承的!
首先明确的说明,子类继承父类所有的属性和方法,包括私有的,只是在子类中不能被访问而已。

乔巴说的非常有道理,lz可以测试一下这个例子

    class Father
    {
        public string A;
        private string _B;

        public void FatherFunction(Child child)
        {
            string s = child._B;
        }
    }

    class Child : Father
    { 
        
    }

这个例子充分说明了父类的所有成员都是可以被子类继承的,至于能不能用则要看使用的“场合”,在父类的范围中,什么都看得到。在子类里面就只能看到protected和public修饰的成员了
------解决方案--------------------
引用:
继承的!
首先明确的说明,子类继承父类所有的属性和方法,包括私有的,只是在子类中不能被访问而已。


确定是被继承的,撸主可以用IL工具查看一下。