A. 虚方法能在程序执行时动态确定要调用的方法,因此比非虚方法更灵活
B. 在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符
C. 在重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符
D. 在重写基类的虚方法时,需要同时带上virtual和override修饰符
您可能感兴趣的试卷
你可能感兴趣的试题
执行下列两条语句后,结果s2的值为()
string s=“abcdefgh”;
string s2=s.Substring(2,3);
A. “bc”
B. “cd”
C. “bcd”
D. “cde”
A. 接口中定义的方法都必须是虚方法
B. 接口中定义的方法可以编写其实现代码
C. 继承接口的类可提供被继承接口中部分成员的实现代码
D. 接口中的所有方法都必须在其派生类中得到实现
A. 多态实际上就是重载,它们本质上是以一样的
B. 多态可以分为编译时多态和运行时多态。前者的特点是在编译时就能确定要调用成员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。
C. 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在编译时就能确定要调用成员方法的哪个版本。
D. 多态和重载是两个完全不同的概念,前者是通过定义虚方法和重写虚方法来实现,后者是通过对同一函数名编写多个不同的实现代码来实现。
A. 类B中的成员可以访问类A中的公有成员
B. 类B中的成员可以访问类A中的保护成员
C. 类B中的成员可以访问类A中的私有成员
D. 类B中的成员可以访问类A中的静态成员
下列代码在类A中重载了减号“-”:
结果n的值为()
A. -3
B. -6
C. 18
D. 9
在类A中定义了属性y:
对此,下列说法正确的是()
A. 属性y可读可写,因此变量x的值为2
B. 属性y可读,但不可写,因此语句“b.y=2;”是错误的
C. 属性y可写,但不可读,因此语句“int x=b.y;”是错误的
D. 属性y可读可写,变量x的值为1
A. 同一个类中的静态成员,类实例化后,在不同的对象中形成不同的静态成员
B. 在类实例化后,同类型的对象都共享类的静态成员,静态成员只有一个版本
C. 在类定义时静态成员属于类,在类实例化后静态成员属于对象
D. 在类实例化后静态成员已被实例化,因此不同的对象有不同的静态成员
A. static
B. new
C. override
D. virtual
类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了()修饰符。
ClassA Aobj=new ClassA();
ClassA.M1();
A. public
B. public static
C. private
D. virtual
A. 构造函数的函数名与类名相同
B. 构造函数可以重载
C. 构造函数可以带有参数
D. 可以指定构造函数的返回值类型
最新试题
finally一般被认为是“清理”块,不管是否发生异常,都将被执行。
在try…catch…finally语句中,若产生异常,执行finally语句后会();若未产生异常,finally块得到执行后()。
.Net FrameWork主要由哪几部分组成?()
创建一个委托实例(具有与事件相同的类型),然后使用+=操作符将委托实例连接到事件。
在C#中要在派生类中重新定义基类的虚函数必须在前面加()。
()类用于按文本方式读写文件。
.Net FrameWork将()定义为一组规则,所有.NET语言都应该遵循次规则才能创建可以与其他语言互操作的应用程序。
接口本身不提供它所定义的成员的实现,只提供成员的说明。
C#中,将类加上()属性来标记该类支持序列化。
创建一个事件,必须包含创建事件的委托和()的名称。