代码改变世界

多态的应用

2010-05-13 13:44  三皮开发时  阅读(180)  评论(0编辑  收藏  举报

 

代码
namespace First
{

    
public class Animal //动物类
    {
        
public void NoVirtual() //非虚方法
        {
            Console.WriteLine(
"我不是虚方法");
        }

        
public virtual void Bark() //虚方法
        {
            Console.WriteLine(
"动物会叫~");
        }
    }

    
public class Dog : Animal //
    {
        
public override void Bark()
        {
            Console.WriteLine(
"狗是旺旺叫~");
        }
       
new  public void NoVirtual() //有意隐藏NoVirtual方法 ,需加new
        {
            Console.WriteLine(
"狗动物的非虚方法");
        }
    }


    
public class Inlet
    {
        
static void Main(string[] args)
        {
            Animal animate 
= new Animal();
            animate.Bark();

            Animal dog 
= new Dog(); //多态
            dog.Bark();    //虚方法重写后会覆盖Bark方法

            dog.NoVirtual();
//非虚方法调用的还是Animal下的NoVirtual
        }
    }
}
 
运行代码: