zoukankan      html  css  js  c++  java
  • 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关键字.

  • 相关阅读:
    从技术演变的角度看互联网后台架构
    设计模式的六大原则
    Xinetd服务的安装与配置详解
    linux route详细解读
    Linux信号处理
    Go语言的成功也预示着Rust的成功【转】
    Nginx/LVS/HAProxy负载均衡软件的优缺点详解
    C#代码覆盖率实践-vsinstr和OpenCover
    MYSQL企业常用架构与调优经验分享
    StrongLoop
  • 原文地址:https://www.cnblogs.com/imxh/p/2174480.html
Copyright © 2011-2022 走看看