遮蔽的應用

摘要:遮蔽的應用

昨天早上的回答,誤導了同事,所以今天將昨天研究的結果再解釋一次給同事聽(遮蔽與覆寫),遮蔽與覆寫文章提到,遮蔽並不是一個好方法,這是錯誤的觀念,今天在講解給同事原理時,發現其實遮蔽與覆寫根本就是不同的東西,遮蔽有它的應用面,以下為範例程式。

這邊希望使用子類別參考,可以呼叫父類別方法時,還是顯示父類別的結果,當呼叫到子類別遮蔽的方法時,顯示為子類別遮蔽的方法。

 

class Program
    {
        static void Main(string[] args)
        {
            //使用覆寫,無法產生想要的結果
            son son = new son();
            son.Son();
            son.ImFather();
            Console.WriteLine("**************************");
            //使用遮蔽,達成呼叫父類別方法時,還是父類別的方法,呼叫遮蔽的方法時,顯示自己的方法
            son2 s = new son2();
            s.Son();
            s.ImFather();
            Console.WriteLine("**************************");
        }
    }

    class Father
    {
        public void ImFather()
        {
            Console.WriteLine("father");
            Son();
        }
        public virtual void Son()
        {
            Console.WriteLine("my son name jerry,ken");
        }
    }

    class son : Father
    {
        public override void Son()
        {
            Console.WriteLine("my name is jerry");
        }
    }

    class son2 : Father
    {
        public void Son()
        {
            Console.WriteLine("My name is ken");
        }
    }

 

如文章有錯誤,煩請告知,新人發帖請多包涵

 

創用 CC 授權條款