继承与多态的习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一:选择题
1. 下面有关析构函数的说法中,不正确的是( )
A.析构函数中不可包含Return语句
B.一个类中只能有一个析构函数
C.用户可定义有参析构函数
D.析构函数在对象被撤销时,被自动调用
2.派生类不可以访问基类的( )
A.Public成员B.Private成员
C.Protected成员D.Protected internel成员
3.有关sealed修饰符,描述正确的是( )
A.密封类可以被继承
B.abstract修饰符可以和sealed修饰符一起使用
C.密封类不能实例化
D.使用sealed修饰符可保证此类不能被派生
4.若想从派生类中访问基类的成员,可以使用( )
A.this关键字B.me关键字
C.base关键字D.override关键字
5.下面有关派生类的描述中,不正确的是( )
A.派生类可以继承基类的构造函数
B.派生类可以隐藏和重载基类的成员
C.派生类不能访问基类的私有成员
D.派生类只能有一个直接基类
6.C#中,继承具有( ),即A类派生B类,B类又派生C类,则C类会继承B类中的成员和A类中的成员。
A.传递性B.多态性C.单继承D.多继承
7.下面有关静态方法的描述中,错误的是( )
A.静态方法属于类,不属于实例
B.静态方法可以直接用类名调用
C.静态方法中,可以定义非静态的局部变量
D.静态方法中,可以访问实例方法
8.下面关于运算符重载的描述中,错误的是( )
A.重载的运算符仍然保持其原来的操作数个数、优先级和结合性不变
B.可以重载双目运算符,不可以重载单目运算符
C.运算符重载函数必须是public的
D.运算符重载函数必须是static的
9.下面对派生类和基类的关系的描述中,不正确的是( )
A.派生类的方法可以和基类的方法同名
B.派生类是对基类的进一步扩充
C.派生类也可作另一个派生类的基类
D.派生类继承基类的公有、保护和私有成员
10.下面关于虚方法的描述中,正确的是()
A.虚方法可以实现静态联编
B.在一个程序中,不能有同名的虚方法
C.虚方法必须是类的静态成员
D.在派生类中重写虚方法,必须加上override修饰符
二、判断:
class A
{
private int x;
public A(int i)
{
x = i;
}
}
class B : A
{
private int y;
public B()
{
y = 0;
}
public B(int i):base(i)
{
y = i;
}
public B(int i, int j) : base(i)
{
y = j;
}
}
三:程序填充:
1. 以下程序的输出结果是:
Base class…..
Derived class…
请在空白处填入适当内客,把程序补充完整。
class Baseclass
{
public void Print() {Console.WriteLine(“Base class…”); } }
class Derivedclass:Baseclass
{ new public void Print()
{ (1);
(2) }}
class Test
{ static void Main()
{ Derivedclass d=new Derivedclass();
d.Print();}}
2. public class People
{ public static string Name;
public int Age;
public People(string Name,int age)
{ (1) .Name=Name;
(1) .Age =age;
}
public static void SayHello()
{Console. (2) ("For you always"); }
}
class Test
{
static void (3) ( )
{ People p= (4) People("Andy",30);
Console.Write("Name:{0};Age:{1}", (5) .Name, (6) .Age.ToString());
(7) .SayHello();
Console.ReadLine ();
}
}
四、看程序写结果
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields() { }
}
class B:A
{
int x=1;
int y;
public B( )
{
y=-1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
}
class Program
{