(精华)2020年8月14日 C#基础知识点 23种设计模式(行为型模式---模板方法模式)

/// 
    /// 模板方法
    /// 
    public class MethodTest
    {
        public static void Show()
        {

            Console.WriteLine("--------------抽象方法----------------------");
            NewTest newTest1 = new NewTest();
            newTest1.Show();


            Console.WriteLine("--------------覆盖父类方法----------------------");
            NewTest newTest2 = new NewTestChild();
            newTest2.Show();

            NewTestChild newTest3 = new NewTestChild();
            newTest3.Show();

            Console.WriteLine("--------------虚方法----------------------");
            VirtualTest virtualTest1 = new VirtualTest();
            virtualTest1.Show();

            VirtualTest virtualTest2 = new VirtualTestChild();
            virtualTest2.Show();

            VirtualTestChild virtualTest3 = new VirtualTestChild();
            virtualTest3.Show();
            Console.WriteLine("--------------接口就不多说了(实现约束)----------------------");

        }
    }

    #region abstract
    public abstract class ParentClass
    {
        /// 
        /// 抽象方法
        /// 
        public abstract void Show();
    }

    public class ChildClass : ParentClass
    {
        /// 
        /// virtual
        /// 
        public override void Show()
        {
            Console.WriteLine("This is ChildClass");
        }
    }
    #endregion abstract

    #region New
    public class NewTest
    {
        public void Show()
        {
            Console.WriteLine("This is NewTest");
        }
    }

    public class NewTestChild : NewTest
    {

        /// 
        /// new 要不要都没区别 都会隐藏掉父类方法
        /// 不要new会提示警告
        /// 
        /// 一般来说,不要使用new
        /// 
        public new void Show()
        {
            Console.WriteLine("This is NewTestChild");
        }
    }
    #endregion New

    #region Virtual
    public class VirtualTest//virtual 只能修饰方法
    {
        /// 
        /// virtual  虚方法  必须包含实现 但是可以被重载
        /// 
        public virtual void Show()
        {
            Console.WriteLine("This is VirtualTest");
        }
    }
    public class VirtualTestChild : VirtualTest
    {
        public override void Show()
        {
            Console.WriteLine("This is VirtualTestChild");
        }
    }

    #endregion Virtual

你可能感兴趣的:(C#,c#)