.NET测试四面向对象基础及参考答案

来源:互联网 发布:千锋java培训怎么样 编辑:程序博客网 时间:2024/04/30 01:12

一.填空题

1. 当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_____(可以 or 不可以)从T派生出新的类,_不可以___(可以 or 不可以)直接创建T的任何实例。(程序调试回答

class T

    {

        string Name;

         private T()

        {

            Name="Hoan";

        }

        static void Main(string[] args)

        {

 

        }

    }

 class A:T

 {

 }2. 在下面的例子里(此题不能调试
using System;
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);
    }

当使用new B()创建B的实例时,产生什么输出?


x=__1__,y=__0__

二.选择题

3 以下描述错误的是()
a)
C++中支持抽象类而在C#中不支持抽象类

b) C++
中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

c)
C#中可使用 new 修饰符显式隐藏从基类继承的成员。

d)
C#中要在派生类中重新定义基类的虚函数必须在前面加Override

 

4. 下列描述错误的是()
a)
类不可以多重继承而接口可以;

b)
抽象类自身可以定义成员而接口不可以;

c)
抽象类和接口都不能被实例化;

d)
一个类可以有多个基类和多个基接口;


5. 下列关于构造函数的描述正确的是()
a)
构造函数可以声明返回类型。

b)
构造函数不可以用private修饰

c)
构造函数必须与类名相同

d)
构造函数不能带参数

6. 下列关于C#中索引器理解正确的是( )
a)
索引器的参数必须是两个或两个以上

b)
索引器的参数类型必须是整数型

c)
索引器没有名字

d)
以上皆非



三.判断题

判断题(括号内填写T---TrueF---False)

1.C#中,装箱操作是将值类型转化成引用类型。  ( T)

2.C#中,索引器是专门用来访问对象中的数组信息的。 (T)

3.C#中,int[][]是定义一个int型的二维数组。(F )  int[,]

4.任何事物都是对象。 (F)

四. 问答题

7.静态变量和非静态变量的区别?

 静态变量用 static 修饰符进行声明,在类中被装载时创建通过类进行访问,所属类的所有实例的同一静态变量都是同一个值

非静态变量:

不带有 static 修饰符声明的变量,在类被实例化时创建通过对象进行访问,同一个类的不同实例的同一非静态变量可以是不同的值。

  static void Main(string[] args)

        {

            Console.WriteLine("静态变量是: {0}",Stu.S);

            Stu S1 = new Stu();

            S1.NotS = "CCC1";

            Stu S2 = new Stu();

            S2.NotS = "CCC2";

            Console.WriteLine("S1 非静态变量是: {0}", S1.NotS);

            Console.WriteLine("S2 非静态变量是: {0}", S2.NotS);

        }

        class Stu

        {

            public static String S = "C# 2.0";

            public String NotS = "ASP.NET";

        }

8.const static readonly 区别?

1.const 字段只能在字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化,readonly 字段可能具有不同的值。

const 字段是编译时常数,而 readonly 字段可用于运行时常数。

static void Main(string[] args)

        {

           const int x=30;

            A p = new A();

           // p.b = 40;//

            Console.WriteLine("p2: x={0}, y={1}, z={2}", x, p.y, p.z);

        }

    class A

    {

         public readonly int y;

         public readonly int z=50;

        public A()

        {

            y = 40;

        }

 

    }

 

9. StringBuilder String 的区别?

System.String是不可变的字符串。String类是final类故不可以继承。
System.StringBuilder
存放了一个可变的字符串,大量使用string类时,并提供一些对这个字符串修改的方法

 

10.internal 修饰符起什么作用?

.internal 修饰符表示内部成员,在同一命名空间内可以访问。

internal  class

{

 

}

11. params 有什么用?

 Params数组参数,它在方法成员的参数列表中使用,为方法提供参数个数,在方法声明中只允许一个 params 关键字。

class T

    {

        public static void xParms(params int[] list)

        {

    

            for (int i = 0; i < list.Length; i++)

            {

                Console.WriteLine(list[i]);

            }

        }

        static void Main(string[] args)

        {

            xParms(1,2,3);

            Console.ReadLine();

        }

    }

 

12. 利用operator声明且仅声明了“==”,有什么错误么

 有错,重载运算符时声明了“==”还必须声明 “!=

13. 类和结构的区别?

类可以被实例化成对象,它是引用类型,分配在内存的堆上的,类不支持多重继承,要能用接口继承来实现,它有默认的构造函数,有析构函数;而结构是值类型,存储的是具体的数据,分配在内存的栈上的,结构可以实现接口,但它们无法继承另一个结构,它要创建构造函数,没有析构函数。

static void Main(string[] args)

        {

            stu1 s = new stu1();

            s.stuNo = 2009;

            s.stuName = "Kebi";

            stu2 p=new stu2();

            p.stuNo = 2010;

            p.stuName = "Nash";

            Console.WriteLine("学号:{0}姓名:{1}",s.stuNo,s.stuName);

            Console.WriteLine("学号:{0}姓名:{1}", p.stuNo, p.stuName);

        }

     class stu1 //定义类

     {

       public int stuNo;

       public string stuName;

     }

    public struct stu2 //定义结构

     {

       public  int stuNo;

       public  string stuName;

     }

 

14.sealed修饰的类有什么特点?

sealed修饰的类是封装类,防止类的继承。

sealed class A

    {

        public string Name;

 

    }

    class B:A  //不能继承

    {

   }

18. 重载的特点是什么?

重载overload的特点:允许存在在多个同名函数/方法,参数或参数类型可以不同。

        static void Main(string[] args)

        {

             int a=1;

            int b=2;

            double c=3;

            double d=4;

            int m=add(a,b);

            Console.WriteLine(m);

            double n=add(c,d);

            Console.WriteLine(n);

        }

        static int add(int x,int y)

        {

            return x+y;

        }

          static double add(double x,double y)

        {

            return x+y;

        }

 

19..描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

C#中类的索引器(indexer)是一类特殊的属性,通过它可以像引用数组一样引用自己的类。

20. 成员变量和成员函数前加static的作用?

它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。
分别用来反映类的状态。
比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作

原创粉丝点击