之前做项目很少用到虚方法,并且自己还一直存在一个误解:虚方法只能放在抽象类中。其实虚方法和抽象类没有必然的关系。虚方法可以在抽象类、普通类中。唯一不能存在接口中。
override 是重写父类中用virtual、abstract、override修饰的方法。
new是派生类用来隐藏父类的中的方法的。可以异常基类中的虚方法和普通方法。
下面举例说明:
首先是virtual关键字
输出 这是Student中的Test
可以看出没有执行基类中的方法,如果需要执行基类中的方法,加入base.Test()
这次输出
这是People中的Test
这是Student中的Test
下面看new关键字:
new 关键字的输出结果在于new的对象
可以看出来,使用new修饰方法是,当你实例一个派生类,但是指向一个基类的对象,这调用方法是调用基类的方法。也就是说调用实例对象指向的方法。
下面来看override修饰的方法,测试实例对象不同时,会不会返回不同的结果?
参考:https://blog.csdn.net/zx13525079024/article/details/51285265