| 当然你可以不声明Person类为抽象类复制代码    class Program
    {   //从学生,老师,校长类中抽象出人的类,学生和老师都有收作业的方法,但是校长不会收作业。
        static void Main(string[] args)
        {
            Student s = new Student();
            s.GetHomework();
            Teacher t = new Teacher();
            t.GetHomework();
            HeadMaster hm = new HeadMaster();
            hm.GetHomework();
            Console.ReadKey();
        }
    }
    abstract class Person
    {
        public virtual void GetHomework()
        {
            Console.WriteLine("我不收作业!");
        }
    }
    class Student:Person
    {
        public override void GetHomework()
        {
            Console.WriteLine("我是学生代表,来收作业的");
        }
    }
    class Teacher : Person
    {
        public override void GetHomework()
        {
            Console.WriteLine("我是老师,我负责收学生代表送来的作业!");
        }
    }
    class HeadMaster : Person
    {
    }
还可以把virtual关键字改成abstract,那么就不能有方法体,等待派生类去重写
 |