美文网首页C#
C#高级进阶-[重载+重写+隐藏]方法

C#高级进阶-[重载+重写+隐藏]方法

作者: xzhuan | 来源:发表于2018-03-12 22:55 被阅读7次

    Aitin原创稿件,转载请注明出处!

    C#语法进阶 <重载+重写+隐藏>方法
    /*
       OOP多态 
       1 方法隐藏:  父类中的方法对于子类不一定适用,此时在子类创建与父类同名方法<并在方法前+ new关键字> 将遮盖掉父类方法
       2.方法重写:     
           2.1 为解决父类所定义的方法在子类中不适用(虚方法)
           2.2 或父类没有实现(抽象方法)
           2.3 三种方法可以重写
                 2.3.1  abstract抽象方法 在子类必须重写,除非子类也是抽象类
                 2.3.2  virtual虚方法 在子类可以重写,父类方法做法与子类不同
                 2.3.3  override重写方法 已经重写过的方法,在子类还可以继续被重写<必须在方法前+override关键字>
          2.4  sealed 修饰符(密封,封闭)  
                 2.4.1 用在方法前必须和override一起,该方法 无法继续被重写
                 2.4.2 用在类前,该类 无法被继承,但是 可以new对象
    */
    
    namespace LearnDemo20180303
    {
       class Program1
       {
           //static void Main1(string[] args)
           //{
           //    //简单 继承
           //    //调用Run方法 3种写法
           //    Animal ani0 = new Animal();
           //    ani0.Run();
           //    Dog dog0 = new Dog();
           //    dog0.Run();
           //    Animal ani1 = new Dog();
           //    ani1.Run();
           //    Console.ReadKey();
           //}
           static void Main(string[] args)
           {
               //简单 继承
               //调用Run方法 3种写法
               Animal ani0 = new Animal();
               ani0.Run();
               Dog dog0 = new Dog();
               dog0.Run();
               Animal ani1 = new Dog();
               ani1.Run();
               Console.ReadKey();
           }
       }
       class Animal
       {
           public void Run()
           {
               Console.WriteLine("Animal Run...");
           }
       }
       class Dog : Animal
       {
           new public void Run()  //方法 隐藏技术
           {
               Console.WriteLine("Dog Run...");
           }
           public void Wawa()
           {
    
           }
       }
    }
    
    • 重载
    namespace LearnDemo20180303
    {
       class Program
       {
           //static void Main(string[] args)
           //{
           //    Solution01.BeginCaculate();
           //}
       }
       public static class Solution01
       {
           private static double area;
           /// <summary>
           /// 作为任务的分发,以及交互
           /// </summary>
           public static void BeginCaculate()
           {
               Console.WriteLine("我可以帮你计算一个图形的面积:包括圆形,矩形,三角形");
               Console.WriteLine("请输入你要计算的图像");
               string type = Console.ReadLine();
               switch (type)
               {
                   case "圆形":
                       Console.WriteLine("请输入半径");
                       float r = int.Parse(Console.ReadLine());
                       AreaCaculate(r);
                       break;
                   case "矩形":
                       Console.WriteLine("请输入长");
                       float x = int.Parse(Console.ReadLine());
                       Console.WriteLine("请输入宽");
                       float y = int.Parse(Console.ReadLine());
                       AreaCaculate(x, y);
                       break;
                   case "三角形":
                       Console.WriteLine("请输入底边长");
                       float d = int.Parse(Console.ReadLine());
                       Console.WriteLine("请输入高");
                       float h = int.Parse(Console.ReadLine());
                       AreaCaculate(d, h,true);
                       break;
                   default:
                       Console.WriteLine("输入错误,程序重新启动...");
                       Console.WriteLine();
                       BeginCaculate();
                       break;
               }
               Console.WriteLine("面积为:" + area);
               Console.WriteLine("计算Success,程序重新启动...");
               Console.WriteLine();
               BeginCaculate();
           }
           /// <summary>
           /// 计算圆的面积
           /// </summary>
           /// <param name="radius">半径</param>
           private static void AreaCaculate(float radius)
           {
               area = radius * radius * Math.PI;
           }
           /// <summary>
           /// 计算矩形面积
           /// </summary>
           private static void AreaCaculate(float x, float y)
           {
               area = x * y;
           }
           /// <summary>
           /// 计算三角形面积
           /// </summary>
           /// <param name="bottom">底</param>
           /// <param name="hegith">高</param>
           /// <param name="value">是否为三角形</param>
           private static void AreaCaculate(float bottom, float hegith, bool value)
           {
               if (value)
               {
                   area = bottom * hegith * 0.5f;
               }
           }
       }
    }
    

    案列简单, 活学活用才是能力

    相关文章

      网友评论

        本文标题:C#高级进阶-[重载+重写+隐藏]方法

        本文链接:https://www.haomeiwen.com/subject/qbzofftx.html