怎样定义基类虚方法,并在派生类中重写基类虚方法?
基类中虚方法的定义:V.irtual方法名([参数列表]){语句序列}派生类中重写方法的定义:O.verride方法名([参数列表]){语句序列}派生类中重写方法的名称、参数个数、类型以及返回值类型必须和基类中的虚拟方法一致虚拟方法不能声明为静态的。V.irtual不能和private一起使用,即虚拟方法不能是私有的。
举一反三
- 在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法;在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。
- 关于虚方法实现多态,下列说法错误的是 A: 派生类必须重写基类的虚方法 B: 一般基类定义虚方法使用virtual关键字 C: 基类的虚方法派生类可以重写,也可以不重写 D: 派生类如需要重写的父类的虚方法,在派生类中将方法用关键字override标记
- 关于在派生类中重新实现从基类继承而来的方法,哪些说法是正确的? A: 在派生类中可以通过override重写基类的虚方法。 B: 派生类中通过override重写的方法默认也是虚方法。 C: 在派生类中不能重写基类中非虚方法。 D: 可以通过new隐藏基类中的虚方法。 E: 通过基类类型变量引用的派生类实例中,访问虚方法时,CLR会根据继承链找到该派生类重写后的方法来执行。
- 在派生类隐藏基类同名成员在基类定义虚方法在派生类覆写基类虚方法声明抽象类或抽象方法或抽象属性在非抽象派生类中重写抽象方法或抽象属性声明密封类或密封方法声明接口,接口可实现多重继承
- C#中基类中的虚方法和抽象方法,都必须在派生类中重写。( )
内容
- 0
引入虚基类就是为了解决什么问题?怎样定义虚基类?带有虚基类的派生类的构造函数有什么特点?
- 1
下列关于虚方法的描述中,正确的是(a)。 A: 虚方法能在程序执行时动态确定要调用的方法,因此比非虚方法更灵活 B: 在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符 C: 在重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符 D: 在重写基类的虚方法时,需要同时带上virtual和override修饰符
- 2
【单选题】关于虚函数重定义的说法中,错误的是()。 A. 基类与派生类中虚函数必须同名 B. 基类与派生类中虚函数必须参数相同 C. 基类与派生类中虚函数返回类型必须相同 D. 基类与派生类中虚函数返回类型可以不同
- 3
下列关于友元的描述中,错误的是( )。 A: 在建立虚基类的派生对象时,只有最远派生类的构造函数调用虚基类的构造函数。 B: 在建立虚基类的派生对象时,虚基类构造函数的调用次数与虚基类下面的派生类个数有关。 C: 设置虚基类的目的是消除二义性 。 D: 虚基类可以实例化一个或多个对象。
- 4
派生类中重定义基类的虚函数称为。