zoukankan      html  css  js  c++  java
  • 多态学习

    一、虚方法

    通过一个例子,人类,中国人,日本人自我介绍

        class Program
        {
            static void Main(string[] args)
            {
                Chinese chinese = new Chinese("小明");
                Chinese chinesetwo = new Chinese("小东");
                Japanese japanese = new Japanese("苍井空");
    
    
                Person[] person = { chinese , chinesetwo, japanese };
    
                for (int i = 0; i < person.Length; i++)
                {
                    person[i].SayHello();
                }
                Console.ReadLine();
            }
        }
        /// <summary>
        /// 人类基类
        /// </summary>
        public class Person
        {
            private string _name;
            
            public string Name { 
                get { return _name; }
                set { _name = value; }
            }
            public Person(string name)
            {
                 this.Name= name;
            }
            public virtual void SayHello()
            {
                Console.WriteLine("我是人类");
            }
        }
        /// <summary>
        /// 中国人继承基类
        /// </summary>
        public class Chinese : Person
        {
            public Chinese(string name) : base(name)
            {
    
            }
            public override void SayHello()
            {
                Console.WriteLine("我是中国人,我叫{0}",this.Name);
            }
        }
        /// <summary>
        /// 日本人继承基类
        /// </summary>
        public class Japanese : Person
        {
            public Japanese(string name) : base(name)
            {
    
            }
            public override void SayHello()
            {
                Console.WriteLine("我是日本人,我叫{0}", this.Name);
            }
        }

    二、抽象类

    通过一个例子,狗叫猫叫

    class Program
        {
            static void Main(string[] args)
            {
                Animal animal = new Dog();
                animal.Bark();
                //狗叫、猫叫
                Console.ReadLine();
            }
        }
        /// <summary>
        /// 动物类
        /// </summary>
        public abstract class Animal
        {
            public abstract void Bark();
        }
        public class Dog : Animal
        {
            public override void Bark()
            {
                Console.WriteLine("狗叫");
            }
        }
        public class Cat : Animal
        {
            public override void Bark()
            {
                Console.WriteLine("猫叫");
            }
        }

     三、接口

      class Program
        {
            static void Main(string[] args)
            {
                //IFlyable flyable = new Person();
                IFlyable flyable = new Bird();
                flyable.Fly();
                Console.ReadLine();
            }
        }
        public interface IFlyable
        {
            void Fly();
        }
        public class Person : IFlyable
        {
            public void Fly()
            {
                Console.WriteLine("人在飞");
            }
        }
        public class Bird : IFlyable
        {
            public void Fly()
            {
                Console.WriteLine("鸟在飞");
            }
        }
  • 相关阅读:
    php程序去除文件 bom头
    类继承接口后,实现接口的方法
    virtual和abstract的使用场景分别是什么?待更新。
    get请求和post请求的总结
    ES6新语法,持续更新
    display:flex中的不懂的问题,待处理
    css相邻兄弟选择器(+),伪类(:hover),伪元素(::after)
    HTML中的input的type类型
    命令行打开程序的集合
    sqlserver 常用的语句
  • 原文地址:https://www.cnblogs.com/liguix/p/14629857.html
Copyright © 2011-2022 走看看