时间:2021-05-19
一,抽象的实现
从上图得出的结果是:
综上:抽象类的虚方法需要被重写,那问题来了重写有两种方式,new和override又有什么区别
二,new和override重写的区别:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Virtualdemo{ class Program { static void Main(string[] args) { Teacher t = new Teacher(); Student stu = t; stu.Exam(); stu.Say(); t.Say(); Console.ReadKey(); } } public abstract class Student { public virtual void Exam() { Console.WriteLine("学生都要考试"); } public void Say() { Console.WriteLine("我是学生"); } } public class Teacher : Student { public override void Exam() { Console.WriteLine("老师不用考试"); } //public override void Say() //报错,提示没有virtual,无法被重写 //{ // Console.WriteLine("我是老师"); //} public new void Say() { Console.WriteLine("我是老师"); } }}结果显示为:
综上总结:
1、如果基类没有定义虚方法,那子类只能使用new,而不能使用override
2、基类有没有定义虚方法,子类都可以使用new
3、子类使用new并不叫重写,而是子类新创建一个方法,只是新创建的这个方法刚好跟基类中的方法同名
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
很多C#的初学者在编程时都容易把抽象类和接口搞混,本文就为大家从概念上讲解抽象类和接口的区别:一、抽象类:含有abstract修饰符的class即为抽象类,抽象
11.可以使用抽象函数重写基类中的虚函数吗?答:可以需使用new修饰符显式声明,表示隐藏了基类中该函数的实现或增加override修饰符,表示抽象重写了基类中该
在C#的继承中尝尝会用到相关的修饰词:override和new。这两个修饰符都可以在新的子类中,重写同名的父类方法。override:扩展或修改继承的方法、属性
抽象类和接口的区别: 1、抽象类要被子类继承,接口要被类实现。 2、接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。 3、接口里定义的变量只
抽象类和接口的区别有: 1、抽象类要被子类继承,接口要被类实现。 2、接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。 3、接口里定义的变量