1
) 下列关于虚方法和抽象方法的描述中错误的是( )。
a) 虚方法必须有方法体,可以被子类重写
b) 抽象方法不允许有方法体,且必须被子类重写
c) 抽象方法必须在抽象类中,而虚方法可以在所有类中
d) 在子类中重写抽象方法或虚方法,都需要用override关键字
答案:c ,
密封类和静态类中不能书写
2) 分析以下使用抽象类的C#代码,其最终的运行结果是( )。
public abstract class Class1
{
public void F()
{
Console.Write("1");
}
abstract public void ABS();
}
public class Class2 : Class1
{
public override void ABS()
{
Console.Write("3");
}
public Class2()
{
Console.Write("2");
}
static void Main()
{
Class2 objB = new Class2();
objB.ABS();
}
}
a) 12
b) 21
c) 13
d) 23
答案:d
先调用构造,然后调用自身的ABS方法()
3)下列代码的运行结果是( )。
class Test
{
public void F()
{
Console.Write("A");
}
}
class B : Test
{
Public new void F()
{
Console.Write("B");
}
static void Main()
{
Test objA = new B();
objA.F();
}
}
a) A
b) B
c) BA
d) AB
答案:a
这里不是多态,所以用父类变量保存子类对象,取的是父类的方法。哪怕父类方法使用Virtual关键字,子类没有Override就不会实现多态。
4) 分析如下C#程序,运行输出的结果是( )。
注意是结构体
public struct Size
{
public int x;
public int y;
public Size(int x, int y)
{
this.x = x;
this.y = y;
}
}
class Test
{
static void Main()
{
Size size1 = new Size(8,10);
Size size2 = size1;
size1.y = 200;
Console.WriteLine("{0} | {1}",size1.y,size2.y);
}
}
a) 200 | 200
b) 200 | 10
c) 10 | 10
d) 10 | 200
答案:b
5) 下面关于单例模式说法错误的是()。
a) 在单例模式中,允许通过new 构造实例
b) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例
c) 在C# 中,static 是实现单例模式的重要关键字
d) 单例模式可以确保所有对象都访问唯一的实例
答案;a