一、多态:
(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.Text;
using System.Collections;
using System.Reflection;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Assembly assembly = Assembly.Load("ConsoleApplication"); //程序集名称
Type type = assembly.GetType("ConsoleApplication.DongWu");//程序集.类名
MethodInfo methodinfo = type.GetMethod("Name");//方法名
Object obj = assembly.CreateInstance("ConsoleApplication.DongWu");//调用方法
methodinfo.Invoke(obj, null);//实现方法
}
}
/// <summary>
/// 动物类
/// </summary>
public class DongWu
{
/// <summary>
/// 名字
/// </summary>
public void Name()
{
Console.WriteLine("DongWu");
}
}
}