public abstract class People   //abstract 说明类People是一个抽象类,不能被实例的
    {
        public People()
        {
        }

        public void Work()
        {
            MessageBox.Show("开始工作!");
        }

        public virtual void GetOffWork()   //虚函数,说明此方法可以被子类覆盖(override)
        {
            MessageBox.Show("下班啦!");
        }
    }

    public class Manage:People   //继承Popele类
    {
        public Manage()
        {
        }

        new public void Work()   //因为基类已经实现了Work方法,而在子类中又实现了Work方法,所以                                 //编译器会报警,在前面加上 new(隐藏基类方法),是将警报关闭。
        {
            base.Work();   //调节基类Popele的方法。显示“开始工作”
            //MessageBox.Show("管理员开始工作罗!");
        }

        public override void GetOffWork()      //覆盖基类的方法
        {
            MessageBox.Show("管理员下班啦");
        }
    }

    public class Employee():People
    {
       public Employee()
       {}

        new public void GetOffWork()      //virtual方法仍然可以 new
        {
            MessageBox.Show("职员下班啦!");
        }

    }

以上应该应该几点:
1、如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。
2、如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。
3、如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!
3、调用父类方法:base.方法名()
4、abstract类是一个抽象类,不能被实例化

相关文章:

  • 2021-06-14
  • 2021-12-17
  • 2021-06-01
  • 2021-08-04
  • 2021-06-17
  • 2022-02-03
  • 2022-02-20
猜你喜欢
  • 2021-05-18
  • 2022-12-23
  • 2021-08-22
  • 2021-10-13
  • 2022-01-10
  • 2021-12-21
相关资源
相似解决方案