• 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()

    这个就是父只向子

  • 相关阅读:
    linux磁盘挂载
    3个方法解决百度网盘限速 (2018-07-20)
    mysql状态分析之show global status
    Cgroups子系统介绍
    Go语言 关键字:defer
    Go语言 map的实现
    Go语言 基本类型
    MySQL 监控指标
    sshpass的使用方法
    C++11 std::ref使用场景
  • 原文地址:https://www.cnblogs.com/yzenet/p/2865233.html
Copyright © 2020-2023  润新知