継承(子クラスは親クラスのプライベートメンバーを継承できません)

1390 ワード

子クラスが親クラスのプライベートメンバーを継承できるかどうかは、これまでよく分からなかったが、継承したと思っていたがアクセスできなかった.今日テストをして、継承していないことを証明しました.
コードを見てください.
namespace  
{
    class A
    {
        private string aa = "dfdf";
        private string print()
        {
            return "****";
        }

        public string AA
        {
            get { return aa; }

        }
    }

    class B : A
    {
        private int a = 1;
        public void test()
        {
            //Type type = typeof(A);
            //MethodInfo methodInfo = type.GetMethod("print", BindingFlags.NonPublic | BindingFlags.Instance);
            //A testA = (A)Activator.CreateInstance(type, false);
            //string str = (string)methodInfo.Invoke(testA, null);
            //Console.WriteLine(str);

            Type type2 = typeof(B);
            MemberInfo[] memberInfo = type2.GetMembers(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField);
            foreach (MemberInfo mi in memberInfo)
            {
                Console.WriteLine(mi.Name);
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                B b = new B();
                b.test();
            }
        }
    }

}

 
テストの結果、親のプライベートフィールドはありません.ok.
転載先:https://www.cnblogs.com/huaizuo/archive/2011/12/08/2280706.html