C#实现面向对象多态性的三种方式

来源:互联网 发布:淘宝刷単软件用哪个好 编辑:程序博客网 时间:2024/05/30 23:02
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication2

    //实现面向对象多态性的有三种方式
    //虚方法
    //抽象类
    //接口


    //抽象类:是对一系列类的抽象
    abstract class Human
    {
        string name;


        public string Name
        {
            get { return name; }
            set { name = value; }
        }




        //5.属性也可以定义为抽象的,属性本身也是方法
        public abstract string num { get; set; }


        public void Say()
        {
            Console.WriteLine("human say...0");
        }


        //public virtual void Walk()
        //{
        
        //}


        //2.抽象方法不能有方法体
        //3.抽象方法只能写在抽象类里
        public abstract void Walk();


        public abstract void Work();










    }




    //4.非抽象类继承抽象类时,抽象类中的所有抽象方法必须实现
    class Student:Human
    {
        string stunum = "";


        DateTime dt = DateTime.Now;


        public override string num
        {
            get
            {
                return stunum;
            }
            set
            {
                stunum = value;
            }
        }


        public override void Walk()
        {
            Console.WriteLine("student walk..");
        }


        public override void Work()
        {
            Console.WriteLine("{0}学生在学习",dt);
        }


        
    }


    class Teacher : Human
    {
        DateTime dt = DateTime.Now;


        public override void Work()
        {
            Console.WriteLine("{0}老师在教书",dt);
        }


        string tnum = "";


        public override string num
        {
            get
            {
                return tnum;
            }
            set
            {
                tnum = value;
            }
        }


        public override void Walk()
        {
            Console.WriteLine("teacher walk`````");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //1.抽象类不能直接实例化


            Human h = new Student();
            h.Walk();
            h = new Teacher();
            h.Walk();


            Human a = new Student();
            a.Work();
            a = new Teacher();
            a.Work();
           
        }
    }
}