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("鸟在飞");
            }
        }
  • 相关阅读:
    go并发和并行
    goroutine
    go并发
    wampserver配置问题
    获取字符串的长度
    mysql中事件失效如何解决
    Go语言中Goroutine与线程的区别
    Mosquitto服务器的日志分析
    phpexcel导出数据 出现Formula Error的解决方案
    Centos6.X 手动升级gcc
  • 原文地址:https://www.cnblogs.com/liguix/p/14629857.html
Copyright © 2011-2022 走看看