c语言基础测试题答案

上传人:xzh****18 文档编号:34267956 上传时间:2018-02-22 格式:DOCX 页数:10 大小:27.55KB
返回 下载 相关 举报
c语言基础测试题答案_第1页
第1页 / 共10页
c语言基础测试题答案_第2页
第2页 / 共10页
c语言基础测试题答案_第3页
第3页 / 共10页
c语言基础测试题答案_第4页
第4页 / 共10页
c语言基础测试题答案_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《c语言基础测试题答案》由会员分享,可在线阅读,更多相关《c语言基础测试题答案(10页珍藏版)》请在金锄头文库上搜索。

1、C#基础测试题答案1、public 关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别,对访问公共成员没有限制。protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。private 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。2.String 是不可变的对象,因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的

2、String 对象。StringBuilder 类就不一样了,每次结果都会对 StringBuilder 对象本身进行操作,而不是生成新的对象,再改变对象引用。3.string str= ,表示一个空串 ,被实列化了,占用了内存空间, string str=null,表示一个空引用,没有占用了空间, 4.一、抽象类:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖

3、它们。二、接口:接口是引用类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化;2、包含未实现的方法声明;3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员); 另外,接口有如下特性:接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。三、抽象类和接口的区别:1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类.而接口只是一个行为的规范或规定,微软的自

4、定义接口总是后带 able 字段,证明其是表述一类类“我能做。”. 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中. 2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法; 3.一个类一次可以实现若干个接口,但是只能扩展一个父类 4.接口可以用于支持回调,而继承并不具备这个特点. 5.抽象类不能被密封。 6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的. 7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。但是,允许抽象类将接口方法映射到抽象方

5、法上。 8.抽象类实现了 oop 中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的座位子类去实现。 9.好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。 10.尽量避免使用继承来实现组建功能,而是使用黑箱复用,即对象组合。因为继承的层次增多,造成最直接的后果就是当你调用这个类群中某一类,就必须把他们全部加载到栈中!后果可想而知.(结合堆栈原理理解)。同时,有心的朋友可以留意到微软在构建一个类时,很多时候用到了对象组合的方法。比如 中,Page 类,有

6、Server Request 等属性,但其实他们都是某个类的对象。使用 Page 类的这个对象来调用另外的类的方法和属性,这个是非常基本的一个设计原则。 11.如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法.四、抽象类和接口的使用:1. 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。2.如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。 3.如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。 4.抽象类主要用

7、于关系密切的对象;而接口适合为不相关的类提供通用功能。5.重载、重写和隐藏的定义:重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。而返回值类型不同是不能构成重载的。重写:继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的 例如:基类方法声明为 virtual(虚方法),派生类中使用 override 申明此方法的重写.隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用 new 声明此方法的隐藏。重载时,根据参数选择调用的方法;重写时,访问父类子类皆调用子类的重写方法;隐藏时,访

8、问父类则调用父类的方法,子类子类的方法。补充:重写 override 一般用于接口实现和继承类的方法改写,要注意1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;4、被覆盖的方法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。6.装箱是将值类型转换为引用类型;拆箱是将引用类型转换为值类型 注:被装过箱的对象才能被拆箱装箱:用于在垃圾回收堆中存储值类型。装箱是值类型到 object 类型或到此值类型所实现的任何接

9、口类型的隐式转换。拆箱:从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。7.受管制代码:在 .net 中,由公共语言运行环境进行管理的代码,它主要负责内存管理。非托管代码:在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。托管代码:由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。8.构造器 C

10、onstructor 不能被继承,因此不能重写 Overriding,但可以被重载 Overloading。9.能,不能,因为静态方法在类加载的时候就初始化了,而非静态的成员变量不一定已初始化,而且即便是初始化了,静态方法也不知道该访问哪个实例的变量。类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。10.在 switch(exp)中,exp 只能是一个整数表达式或者枚举常量(javase5),整数表达式可以是int 基本类型或 I

11、nteger 包装类型,由于 byte,short,char 都可以隐含转换为 int,所以这些类型以及这些类型的包装类型也是可以的。显然 long 和 String 类型都不符合 switch 语法的规定,并且不能隐式的转换成 int 类型,所以它们不能作用于 switch 语句中,此时只能只能使用一系列的 if 等语句了。11.抽象方法不可以是 static 的因为 static 的方法不会被继承。12.数组中没有 length()这个方法,但是数组中有 length 这个属性。用来表示数组的长度。 String 中没有 length()这个方法。用来得到字符串的长度。13、在 vs 中运

12、行下可知:无法将类型“int”隐式转换为“short ”。存在一个显式转换( 是否缺少强制转换?)14、const 成员都是 static 所以应该去掉 static15、在 vs 中运行下可知:13,1016、是 2 个。一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是xyz。s 只是一个引用,本身不是对象。17、sealed 修饰符表示密封用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥用于方法和属性时,表示该方法或属性不能再被重写,必须和 override 关键字一起使用,因为使用 sealed 修饰符的方法或属

13、性肯定是基类中相应的虚成员通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱恰当的利用 sealed 修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员18、const: 用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序static readonly: 用 static readonly 修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化。const 和 static readonly 的确非常像:通过类名而不是对象名进行

14、访问,在程式中只读等等。在多数情况下能混用。辅助:二者本质的差别在于,const 的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而 static readonly 是在运行时计算出其值的,所以还能通过静态构造函数来赋值。19、this:引用总是指向调用成员方法的对象本身。20、ArrayListarraylist=new ArrayList();for(int i=0;i 0)return 1;elsereturn 0;class Rectangle : Shapepublic override void calculatearea()while (true)tryConso

15、le.WriteLine(请输入长:);double a = Convert.ToDouble(Console.ReadLine();Console.WriteLine(请输入宽:);double b = Convert.ToDouble(Console.ReadLine();if (check(a,b) = 1)Console.WriteLine(边长为0,1的矩形,面积2, a,b, a*b);break;elsethrow new Exception();catch (Exception )Console.WriteLine(输入不合法!);publicint check(double

16、a,double b)if (a 0 & b 0)return 1;elsereturn 0;class Triangle : Shapepublic override void calculatearea()while (true)tryConsole.WriteLine(请输入第一条边:);double a = Convert.ToDouble(Console.ReadLine();Console.WriteLine(请输入第二条边:);double b = Convert.ToDouble(Console.ReadLine();Console.WriteLine(请输入第三条边:);double c = Convert.ToDouble(Console.ReadLine();if (

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题 > 高中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号