zoukankan      html  css  js  c++  java
  • 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()

    这个就是父只向子

  • 相关阅读:
    全链路压测(1):认识全链路压测
    碎片式的技术笔记
    聊聊传统压测和全链路压测的区别
    生产全链路压测常态化方案
    C++选择文件打开方式的函数
    常用的一些 git 命令
    MyBatis 批量插入数据的 3 种方法!
    MyBatis Plus 批量数据插入功能,yyds!
    什么是可中断锁?有什么用?怎么实现?
    1.3w字,一文详解死锁!
  • 原文地址:https://www.cnblogs.com/yzenet/p/2865233.html
Copyright © 2011-2022 走看看