C#中的override和new的区别

       之前做项目很少用到虚方法,并且自己还一直存在一个误解:虚方法只能放在抽象类中。其实虚方法和抽象类没有必然的关系。虚方法可以在抽象类、普通类中。唯一不能存在接口中。

override 是重写父类中用virtual、abstract、override修饰的方法。

new是派生类用来隐藏父类的中的方法的。可以异常基类中的虚方法和普通方法。

下面举例说明:

首先是virtual关键字

People类
Student类
执行

输出 这是Student中的Test

 可以看出没有执行基类中的方法,如果需要执行基类中的方法,加入base.Test()

这次输出

这是People中的Test

这是Student中的Test

下面看new关键字:

new 关键字的输出结果在于new的对象

可以看出来,使用new修饰方法是,当你实例一个派生类,但是指向一个基类的对象,这调用方法是调用基类的方法。也就是说调用实例对象指向的方法。

下面来看override修饰的方法,测试实例对象不同时,会不会返回不同的结果?

参考:https://blog.csdn.net/zx13525079024/article/details/51285265

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。