什么是多态

 一,什么是多态?

1》多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能" 。

2》同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态

 二,实现多态的三种方式:抽象,接口,虚方法实现多态。

1》虚方法实现多态

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DuoTai
{

    //多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。
    //同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态
    //抽象,接口,虚方法实现多态


    //虚方法实现多态
    class Say
    {
        public virtual void Spreak()
        {
            Console.WriteLine("父类");
        }
    }
    class Chinese : Say
    {
        public override void Spreak()
        {
            Console.WriteLine("中文");
        }
    }
    class English : Say
    {
        public override void Spreak()
        {
            Console.WriteLine("英文");
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            //同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果
            Say s = new Say();
            s.Spreak();
            English en = new English();
            en.Spreak();
            Chinese ch = new Chinese();
            ch.Spreak();
        }
    }
}

 2》接口实现多态

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DuoTai2
{
    class Program
    {
        //二,接口实现多态
        public interface Say
        {
            void Speak();
        }

        public class English : Say
        {
            public void Speak()
            {
                Console.WriteLine("英文");
            }
        }

        public class Chinese : Say
        {
            public void Speak()
            {
                Console.WriteLine("中文");
            }
        }
        static void Main(string[] args)
        {
            //同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果
            Say en = new English();
            en.Speak();
            Say ch = new Chinese();
            ch.Speak();
        }
    }
}

 3》抽象实现多态

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DuoTai3
{
    class Program
    {
        // 抽象实现多态

        public abstract class Say
        {
            public abstract void Speak();
        }

        public class English:Say
        { 
          public override void Speak()
          {
              Console.WriteLine("英文");
          }
        }

        public class Chinese :Say
        {
            public override void Speak()
            {
                Console.WriteLine("中文");
            }
        }
        static void Main(string[] args)
        {
            Say en = new English();
            en.Speak();
            Say ch = new Chinese();
            ch.Speak();
        }
    }
}

 综上:都是,同一操作作用于不同的对象,不同的解释,产生不同的执行结果

posted @ 2017-02-13 16:20  叶丶梓轩  阅读(705)  评论(0编辑  收藏  举报