C#第3版第3章习题解答(共4页).doc
精选优质文档-倾情为你奉上Ch3 类和结构 习题解答1编写一个控制台应用程序,完成下列功能。(1)创建一个类,用无参数的构造函数输出该类的类名。(2)增加一个重载的构造函数,带有一个string类型的参数,在此构造函数中将传递的字符串打印出来。(3)在Main方法中创建属于这个类的一个对象,不传递参数。(4)在Main方法中创建属于这个类的另一个对象,传递一个字符串“This is a string.”。(5)在Main方法中声明类型为这个类的一个具有5个对象的数组,但不要实际创建分配到数组里的对象。(6)写出运行程序应该输出的结果。【解答】using System;class Test1 public Test1() Console.WriteLine(this); public Test1(string str) Console.WriteLine(str); public static void Main() Test1 t1 = new Test1(); Test1 t2 = new Test1("This is a string."); Test1 t3 = new Test15; 输出结果:Test1This is a string.2编写一个控制台应用程序,完成下列功能,并回答提出的问题。(1)创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。(2)从A继承一个名为C的新类,并在C内创建一个成员B。不要为C创建构造函数。(3)在Main方法中创建类C的一个对象,写出运行程序后输出的结果。(4)如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么?【解答】using System;public class A public A() Console.WriteLine("A"); public class B public B() Console.WriteLine("B"); public class C : A B newb = new B();class MainClass public static void Main() C newc = new C(); Console.ReadLine(); 输出结果:BA 如果在C中也创建一个构造函数输出“C”,即添加:public C()Console.WriteLine("C"); 则整个程序运行的结果为:BAC3编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。(1)创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。(2)再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。(3)在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。【解答】 using System;public class A public virtual void MyMethod(int num) num += 10; Console.WriteLine(num); public class B : A public override void MyMethod(int num) num += 50; Console.WriteLine(num); class MainClass public static void Main() A newa = new A(); newa.MyMethod(2); B newb = new B(); newb.MyMethod(2); Console.ReadLine(); 输出结果:12524编写一个控制台应用程序,定义一个类MyClass,类中包含有public、private以及protected数据成员及方法。然后定义一个从MyClass类继承的类MyMain,将Main方法放在MyMain中,在Main方法中创建MyClass类的一个对象,并分别访问类中的数据成员及方法。要求注明在试图访问所有类成员时哪些语句会产生编译错误。【解答】using System;class MyClass public int i; private int j; protected int k; public void method1() Console.WriteLine("public method."); private void method2() Console.WriteLine("private method."); protected void method3() Console.WriteLine("protected method."); class MyMain : MyClass public static void Main() MyClass t = new MyClass(); Console.WriteLine("i=0", t.i); Console.WriteLine("j=0", t.j);/会出现编译错误,私有成员不允许在其它类中访问 Console.WriteLine("k=0", t.k);/会出现编译错误,应该创建MyMain的对象,然 /后通过MyMain的对象访问 t.method1(); t.method2(); /会出现编译错误,私有的方法不允许在其它类中调用 t.method3(); /会出现编译错误,应该创建MyMain的对象,然后通过MyMain的 /对象调用该方法 5创建一个类包含有protected数据。在相同的文件里创建第二个类,用一个方法操纵第一个类里的protected数据。【解答】using System;class Class1 protected int i = 5; protected void MyMethod() Console.WriteLine("protected method."); class Class2 : Class1 private void NewMethod() Console.WriteLine(this.i); this.i += 10; Console.WriteLine(this.i); public static void Main() Class2 t = new Class2(); t.NewMethod(); 专心-专注-专业