- 2章习题
一、填空题
1、 面向对象的三大特征是_封装_____、继承______和__多态____。
2、 在C#中,可以使用关键字_class_____来创建类的实例对象。
3、 定义在类中的变量称为_属性_____,定义在方法中的变量称为___类
___。
4、 面向对象程序设计的重点是_属性_____的设计。
5、 在静态类中,其内部的所有成员都必须是__类内
____。
6、 类用于描述多个对象的共同特征,它是对象的_无限制
_____。
7、 被static关键字修饰的方法被称为_静态变量_____,它只能用_实例方法_____的形式被调用。
8、 在C#中,可以将类定义在另一个类的内部,这样的类称作_数据结构_____。
9、 属性是对__字段____的封装,此时在类中定义的字段用_private_____关键字修饰。
10、在C#中,除了使用构造方法来为属性赋初值,还可以使用__set___来为对象属性赋初值。
二、判断题
1、如果类的成员被private所修饰,该成员不能在类的外部被直接访问。
2、C#中的每个类都至少有一个构造方法用来初始化类中的成员。
3、声明构造方法时,不能使用private关键字修饰。
4、被static关键字修饰的字段或方法,可以通过对象来访问。
5、在内部类中不能访问外部类的成员。
三、选择题
1、类的定义必须包含在以下哪种符号之间? B
A、方括号[] B、花括号{} C、双引号“” D、圆括号()
2、下面关于类的声明,正确的是? B
A、 public void HH{…} B、 public void HH(){…}
C、 public class void number{} D、 public class Car{…}
3、在以下什么情况下,构造方法会被调用? C
A、 类定义时 B、 创建对象时 C、 调用对象方法时 D、 使用对象的变量时
4、下面对于构造方法的描述,正确的有哪些?(多选)ad
A、方法名必须和类名相同
B、方法名的前面没有返回值类型的声明
C、在方法中不能使用return语句返回一个值
D、当定义了带参数的构造方法,系统默认的不带参数的构造方法依然存在
5、使用this调用的构造方法,下面的说法正确的是?(多选)ab
A、使用this调用构造方法的格式为this([参数1,参数2…])
B、可以在构造方法中使用this调用其他的构造方法
C、使用this调用其他构造方法的语句必须放在第一行
D、在重载的构造方法中,不能使用this互相调用
6、下面选项中,哪些可以被static关键字修饰?(多选)ab
A、字段 B、局部变量 C、成员方法 D、成员嵌套类
7、关于嵌套类描述,正确的是?(多选)bcd
A、内部类是外部类的一个成员,可以访问外部类的成员
B、外部类可以访问内部类的成员
C、外部类与内部类的非静态成员可以重名
D、在内部类中不能声明静态成员,但内部类中可以直接引用外部类的静态成员
8、下面对于单例设计模式的描述,正确的是?(多选)bc
A、类中的构造方法必须声明为私有
B、定义静态变量用来引用该类的实例对象
C、使用private修饰静态变量,禁止外界直接访问
D、定义返回该类实例的静态方法
9、请先阅读下面的代码
class Test
{
public Test()
{
Console.Write ("构造方法一被调用了");
}
public Test(int x)
: this()
{
Console.Write ("构造方法二被调用了");
}
public Test(bool b)
: this(1)
{
Console.Write ("构造方法三被调用了");
}
public static void Main(string[] args)
{
Test test = new Test(true);
}
}
上面程序的运行结果为下列哪一项?d
A、构造方法一被调用了
B、构造方法二被调用了
C、构造方法三被调用了
D、构造方法一被调用了、构造方法二被调用了、构造方法三被调用了
10、Outer类中定义了一个嵌套类Nesting,创建Nesting类实例对象时,以下代码正确的是?a
A、Nesting nesting= new Nesting ();
B、Outer. Nesting nesting = new Outer().new Nesting ();
C、Outer. Nesting nesting = new Outer. Nesting ();
D、Nesting nesting = new Outer. Nesting ();
四、程序分析题
阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。
代码一:
class A
{
private int secret = 5;
}
class Test1
{
public static void Main(string[] args)
{
A a = new A();
Console.WriteLine(a.secret++);
Console.ReadKey();
}
}
代码二:
class Test2
{
int x = 50;
static int y = 200;
public static void Method()
{
Console.WriteLine(x + y);
}
}
class Program
{
public static void Main(string[] args)
{
Test2.Method();
}
}
代码三:
class Outer
{
public string name = "Outer";
public class Nesting
{
string name = "Nesting";
void ShowName()
{
Console.WriteLine(name);
}
}
}
class Program
{
public static void Main(string[] args)
{
Outer.Nesting() nesting = new Outer.Nesting();
Console.WriteLine(nesting.name);
}
}
五、简答题
1、简述构造方法的特点?
就是写一个个的类!
简述面向对象的三大特征?
封装就是隐藏对象的内部实现细节,仅公开接口供用户使用。
继承描述子类与父类之间的一种关系,通过继承,子类既保留了父类
原有的功能,又可以根据需求进行相应的扩展。
多态指的是多个对象对于同一个指令,有各自的理解,产生不同的行为。
六、编程题
1、请按照以下要求设计一个学生类Student,并进行测试。
要求如下:
(1)Student类中包含姓名、成绩两个字段。
(2)分别给这两个字段定义自己的属性。
(3)Student类中定义两个构造方法,其中一个是无参的构造方法,另一个是接收两个参数的构造方法,分别用于为姓名和成绩属性赋值。
(4)在Main()方法中分别调用不同的构造方法创建两个Student对象,并为属性和性别赋值。
2、编写一个程序实现单例模式。
要求如下:
(1)在类的内部创建一个该类的实例对象,并使用静态变量引用该对象。
(2)类的构造方法声明为私有。
(3)定义一个静态方法用于返回该类实例。