zoukankan      html  css  js  c++  java
  • 多态和反射

    一、多态:

    (1)接口多态:

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using System.Collections;  
      
    namespace ConsoleApplication  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                DongWu Dw1 = new Mao();  
                Dw1.Name(); //输出Mao  
                DongWu Dw2 = new Gou();  
                Dw2.Name();//输出Gou  
            }  
        }  
        /// <summary>  
        /// 动物接口  
        /// </summary>  
        public interface DongWu  
        {  
            /// <summary>  
            /// 名字  
            /// </summary>  
            void Name();  
        }  
        /// <summary>  
        /// 猫类  
        /// </summary>  
        public class Mao : DongWu  
        {  
            public void Name()  
            {  
                Console.WriteLine("Mao");  
            }  
        }  
        /// <summary>  
        /// 狗类  
        /// </summary>  
        public class Gou : DongWu  
        {  
            public void Name()  
            {  
                Console.WriteLine("Gou");  
            }  
        }  
      
    }  

    (2)非抽象非接口多态:

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using System.Collections;  
      
    namespace ConsoleApplication  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                DongWu Dw = new DongWu();  
                Dw.Name(); //输出DongWu  
                DongWu Dw1 = new Mao();  
                Dw1.Name(); //输出Mao  
                DongWu Dw2 = new Gou();  
                Dw2.Name();//输出Gou  
            }  
        }  
        /// <summary>  
        /// 动物类  
        /// </summary>  
        public class DongWu  
        {  
            /// <summary>  
            /// 名字  
            /// </summary>  
            public virtual void Name()  
            {  
                Console.WriteLine("DongWu");  
            }  
        }  
        /// <summary>  
        /// 猫类  
        /// </summary>  
        public class Mao : DongWu  
        {  
            public override void Name()  
            {  
                Console.WriteLine("Mao");  
            }  
        }  
        /// <summary>  
        /// 狗类  
        /// </summary>  
        public class Gou : DongWu  
        {  
            public override void Name()  
            {  
                Console.WriteLine("Gou");  
            }  
        }  
      
    }  

    (3)抽象多态:

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using System.Collections;  
      
    namespace ConsoleApplication  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                DongWu Dw1 = new Mao();  
                Dw1.Name(); //输出Mao  
                DongWu Dw2 = new Gou();  
                Dw2.Name();//输出Gou  
            }  
        }  
        /// <summary>  
        /// 动物类  
        /// </summary>  
        public abstract class DongWu  
        {  
            /// <summary>  
            /// 名字  
            /// </summary>  
            public abstract void Name();  
        }  
        /// <summary>  
        /// 猫类  
        /// </summary>  
        public class Mao : DongWu  
        {  
            public override void Name()  
            {  
                Console.WriteLine("Mao");  
            }  
        }  
        /// <summary>  
        /// 狗类  
        /// </summary>  
        public class Gou : DongWu  
        {  
            public override void Name()  
            {  
                Console.WriteLine("Gou");  
            }  
        }  
      
    }  

    二、反射

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace 并发和多少线程
    {
        class Program
        {
           
            static void Main(string[] args)
            {
    
                Assembly assembly = Assembly.Load("并发和多少线程"); //程序集名称  
                Type type = assembly.GetType("并发和多少线程.DongWuY");//程序集.类名  
                MethodInfo methodinfo = type.GetMethod("NameHello");//方法名  
                Object obj = assembly.CreateInstance("并发和多少线程.DongWuY");//调用方法  
                methodinfo.Invoke(obj, null);//实现方法  
            }
        }
        /// <summary>  
        /// 动物类  
        /// </summary>  
        public class DongWuY
        {
            /// <summary>  
            /// 名字  
            /// </summary>  
            public void NameHello()
            {
                Console.WriteLine("DongWu");  
            }
        }
    }

    运行效果:

  • 相关阅读:
    数据库管理
    CodeSmith的运用正在完善中,待续
    各搜索引擎搜索代码
    浏览器本地存储
    QQ在线代码生成
    6组Alpha冲刺4/6
    结对编程作业
    camera相关
    数电、模电相关
    usb协议学习
  • 原文地址:https://www.cnblogs.com/hehehehehe/p/6118224.html
Copyright © 2011-2022 走看看