zoukankan      html  css  js  c++  java
  • 实现多态的手段1 --虚方法virtual

    首先我们建立一个Person类,和几个类继承person

    public class Person {
            public string Name { get; set; }
            public string Sex { get; set; }
            public int Age { get; set; }    
        }

       public class American : Person {

         //写一个sayNationality()方法说出自己的国籍
           public  void sayNationality()
            {
                Console.WriteLine("USA");
            }
        }
        public class Japanese : Person
        {
      public  void sayNationality()
            {
                Console.WriteLine("日本");
            }
        }
        public class Chinese : Person
        {
          public  void sayNationality()
            {
                Console.WriteLine("中国");
            }
        }
        public class faguo : Person
        {
           public  void sayNationality()
            {
                Console.WriteLine("法国");
            }
        }

    2.让每一个子类说出自己国家的国籍

    3.遍历出结果

       class Program
        {
            static void Main(string[] args) {
                //Person p = new American();
                //p.sayNationality();
                Person[] pers = new Person[6];
                pers[0] = new American();
                pers[1] = new Chinese();
                pers[2] = new Japanese();
                pers[3] = new American();
                pers[4] = new Chinese();
                pers[5] = new faguo();

                //遍历数组
                for (int i = 0; i < pers.Length; i++)
                {
                    //简单的几个国家可以使用if else判断,但是如果想让程序具有可扩展性,那么使用方法重载
                    #region 不能忍的代码
                    //if (pers[i] is American) {
                    //    ((American)pers[i]).sayNationality();
                    //}
                    //else if (pers[i] is Chinese) {
                    //    ((Chinese)pers[i]).sayNationality();
                    //}
                    //else if (pers[i] is Japanese)
                    //{
                    //    ((Japanese)pers[i]).sayNationality();
                    //}
                    //希望一句话解决
                    #endregion
               
                }
                Console.ReadKey();
            }
        }

    4.如果是只有几条简单的数据时,我们可以使用循环打印,如果很多条数据,为了程序的扩展性则需要使用虚方法实现多态

       1.在父类里写虚方法

        public class Person {
            public string Name { get; set; }
            public string Sex { get; set; }
            public int Age { get; set; }    

            使用virtual关键字实现虚方法

        public virtual void sayNationality()
            {
                Console.WriteLine("地球人");
            }
        }

     2.在每一个子类中对虚方法进行重写

         public class American : Person {
            //说出自己的国籍通过override关键字重写子类,例举一个
            public override   void sayNationality()
            {
                Console.WriteLine("USA");
            }
        }

    3.在遍历结果的时候只需要调用父类中的虚方法就可以实现输出对应国家的名字,不需要繁琐的判断

        class Program
        {
                 同上
                //遍历数组
                for (int i = 0; i < pers.Length; i++)
                {
                    //简单的几个国家可以使用if else判断,但是如果想让程序具有可扩展性,那么使用方法重载
                    #region 不能忍的代码
                    //if (pers[i] is American) {
                    //    ((American)pers[i]).sayNationality();
                    //}
                    //else if (pers[i] is Chinese) {
                    //    ((Chinese)pers[i]).sayNationality();
                    //}
                    //else if (pers[i] is Japanese)
                    //{
                    //    ((Japanese)pers[i]).sayNationality();
                    //}
                    //希望一句话解决
                    #endregion
                    pers[i].sayNationality();
                }
                Console.ReadKey();
            }
        }

  • 相关阅读:
    ZTUnity Profiler概述及Profiler window 说明
    利用反射球实现镜面效果
    (乱入)FingerGesture
    生成万花筒效果并截图
    (六)添加adb命令
    超时处理
    判断是否存在UI被触摸
    UI控件拖动失效
    (五)Unity插件生成
    (四)适配器Adapter
  • 原文地址:https://www.cnblogs.com/wangcongsuibi/p/7149536.html
Copyright © 2011-2022 走看看