How can I hide a base class public property in the derived class

后端 未结 16 1503
自闭症患者
自闭症患者 2021-01-01 08:39

I want to hide the base public property(a data member) in my derived class:

class Program
{
    static void Main(string[] args)
    {
        b obj = new b()         


        
16条回答
  •  無奈伤痛
    2021-01-01 09:11

    Yes, it is possible. What say you on the delegation. I will try to give an idea of what is called "delegation" in OOP with a piece of code:

    public class ClassA
    {
        // public
        public virtual int MyProperty { get; set; }
    
        // protected
        protected virtual int MyProperty2 { get; set; }
    }
    
    public class ClassB
    {
        protected ClassC MyClassC;
    
        public ClassB()
        {
            MyClassC = new ClassC();
        }
    
        protected int MyProperty2
        {
            get { return MyClassC.MyProperty2; }
            set { MyClassC.MyProperty2 = value; }
        }
    
        protected int MyProperty
        {
            get { return MyClassC.MyProperty; }
            set { MyClassC.MyProperty = value; }
        }
    
        protected class ClassC : ClassA
        {
            public new int MyProperty2
            {
                get { return base.MyProperty2; }
                set { base.MyProperty2 = value; }
            }
    
            public override int MyProperty
            {
                get { return base.MyProperty; }
                set { base.MyProperty = value; }
            }
        }
    }
    

提交回复
热议问题