业精于勤

导航

C#面向对象基础(七) 多态

先明确以下关系

Animal   Wolf  Goat

public class Animal
    {
        
public string name;
        
public int age;
        
        
public Animal(string n, int a)
        {
            name 
= n;
            age 
= a;
            Console.WriteLine(
"Animal构造方法");
        }

        
public virtual void Eat()
        {
            Console.WriteLine(
"动物吃东西...");
        }
           }

 

 

 public class Wolf : Animal
    {    
public void Eat()
        {
            Console.WriteLine(
"吃羊...");         
        }
    }

 

 

public class Goat : Animal
    {
        
public void Eat()
        {
            Console.WriteLine(
"吃草...");
        }
    }

 在main方法里,如下代码:

  Animal a = new Wolf("huitai",2);
            a.Eat();

代码的意思是,动物a,是一只叫灰太的,2岁的小狼. a.eat(),输出的结果是什么? 你想,肯定是吃羊了

错!

动物吃东西

这是因为,a.eat(),a虽然是狼,但些时被当动物看街 eat方法是animal的eat方法.

 

多态

试一下,在Animal类的eat方法前加virtual,在wofl的eat方法前加上override关键字.

 

 

posted on 2011-09-13 10:33  言午  阅读(223)  评论(0编辑  收藏  举报