C#关于面对象多态例子

//主的喂狗 

class Program
    {
        static void Main(string[] args)
        {
            //我们来模拟一个主人养狗动物的例子 首先创建一个主人对象,同时主人买了条狗
            //买来条狗,主人一喂,狗会吃东西
            Person person = new Person();
            Dog dog = new Dog();
            person.feed(dog);//主人喂狗
          
        }
    }

//   主人类

 class Person { //主人喂狗
       public void feed(Dog dog) {
           dog.eat();
       } 
   }

//狗类

 class Dog {
        //狗吃东西动作
        public void eat(){
            Console.Write("狗吃东西"); }
         }

//过了几天张三这哥们在市场上看到一只猫,又想喂猫了

 class Cat     {       

  public void eat() {  

Console.Write("猫吃东西");

        }  

   }

  class Program
    {
        static void Main(string[] args)
        {
            //我们来模拟一个主人养狗动物的例子 首先创建一个主人对象,同时主人买了条狗
            //买来条狗,主人一喂,狗会吃东西
            Person person = new Person();
            Dog dog = new Dog();
            Cat cat = new Cat();
            person.feed(dog);//主人喂狗
            person.feed(cat);//主人喂猫
        }
    }

//又没过几天又看到一只兔子,又想养兔了

这时候我们是不是感觉程序有点不好扩展了

我们想既然是养动物,我们为何不创建个动物类了

class Anmail
    {
          //动物吃东西动作
        public void eat(){
         }
    }

//到时候什么狗 猫 兔都继承 Anmail类就好了

//那么主人里面的可以这么写就好了

class Person { //主人喂狗 
       //主人喂动物
       public void feed(Anmail anmial)
       {
           anmial.eat();
       }
   }

//主程序可以这么写了

 class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person();
            Anmail an= new Dog();( 养狗 养猫) // Anmail an= new Cat()
            person.feed(an);//主人喂狗或主人喂猫 
        }
    }

//写到这里是不是稍微感觉到多态的好处了,当然这只是一个小例子

下面说下  Anmail an= new Dog()

这个就是父只向子

 

 

 

 

 

posted @ 2013-01-17 21:15  KyrieYang  阅读(275)  评论(0编辑  收藏  举报