面向對象設計之:多態

 

實現多態的兩種方式 接口和抽象類

抽象類

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


namespace Eric.DotNet
{
    class Program
    {
        static void Main(string[] args)
        {
            Person aPerson = null;
            aPerson = new PersonAtHome();
            aPerson.Name = "Eric liu";
            aPerson.Age = 27;
            aPerson.DoWork();
            Console.Write("/r/n==========================================/r/n");
            aPerson = new PersonAtSchool();
            aPerson.DoWork();
            Console.Write("/r/n==========================================/r/n");

            Console.Read();
        }
    }

    abstract class Person
    {
        private string _name;
        private Int32 _age;

        public string Name
        {
            set { this._name = value; }
            get { return this._name; }
        }

        public Int32 Age
        {
            get { return this._age; }
            set { this._age = value; }
        }

        public abstract void DoWork();
    }

    interface IPerson
    {

    }

    class PersonAtHome : Person
    {
        public override void DoWork()
        {
            Console.WriteLine(Name + " 我是爸爸媽媽的孩子");
        }
    }

    class PersonAtSchool : Person
    {
        public override void DoWork()
        {
            Console.WriteLine(Name + "我是老師的學生");
        }
    }

    class PersonAtBus : Person
    {
        public override void DoWork()
        {
            Console.WriteLine(Name + "我是司機的乘客");
        }
    }
}


接口

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

namespace Eric.DotNet
{
    class Program
    {
        static void Main(string[] args)
        {
            IPerson aPerson = null;
            aPerson = new PersonAtHome();
            aPerson.Name = "Eric liu";
            aPerson.Age = 27;
            aPerson.DoWork();
            Console.Write("/r/n==========================================/r/n");
            aPerson = new PersonAtSchool();
            aPerson.DoWork();
            Console.Write("/r/n==========================================/r/n");

            Console.Read();
        }
    }


    interface IPerson
    {
        string Name
        {
            get;
            set;
        }

        Int32 Age
        {
            get;
            set;
        }

        void DoWork();
    }

    class PersonAtHome : IPerson
    {
        private string _name;
        private Int32 _age;

        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }

        public Int32 Age
        {
            get { return this._age; }
            set { this._age = value; }
        }

        public  void DoWork()
        {
            Console.WriteLine(Name+" 我是爸爸媽媽的孩子");
        }
    }

    class PersonAtSchool : IPerson
    {
        private string _name;
        private Int32 _age;

        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }

        public Int32 Age
        {
            get { return this._age; }
            set { this._age = value; }
        }

        public  void DoWork()
        {
            Console.WriteLine(Name + "我是老師的學生");
        }
    }

    class PersonAtBus : IPerson
    {
        private string _name;
        private Int32 _age;

        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }

        public Int32 Age
        {
            get { return this._age; }
            set { this._age = value; }
        }

        public  void DoWork()
        {
            Console.WriteLine(Name + "我是司機的乘客");
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章