面向对象程序设计题库 - (2013)(6)

2019-03-01 09:38

{

Console.WriteLine(\ }

public override void MethodB() { } }

class Class2 : Class1 {

new public void MethodB() { } }

public static void Main(string[] args) {

Class2 o = new Class2(); o.MethodA(); }

答案:Class1

14、 下列代码运行结果(难易度:较难;知识点:继承)(10分) public class Student{

public virtual void Exam(){

Console.WriteLine(\学生都要考试\ }

}

public class Undergraduate:Student{ public new void Exam(){ base.Exam();

Console.WriteLine(\大学生有选择考试科目的权利\ }

}

static void Main() {

Student stu = new Undergraduate(); stu.Exam();

答案:学生都要考试

15、 (难易度:较难;知识点:继承)(15分)输入两个正整数,分别作为直角三角

形的两个直角边,求出斜边的长度。 提示:勾股定理 c2=a2+b2 Math.Exp

Math.Sqrt

要求继承前面的四则运算类,可以调用其中的求和的方法;在继承类中加写方法完成斜边的计算

16、 (难易度:较难;知识点:继承)(15分)设计一个人类Person,有一个虚方法

GetPerson(),输出“这是基类Person”,然后设计子类:学生类Student,并重写基类的虚方法,输出“这是学生类”;教师类Teacher,并重写基类的虚方法,输出“这是教师类”;医生类Doctor,并重写基类的虚方法,输出“这是医生类”。分别建立每个类的对象,分别输出各对象的信息。 17、 (难易度:较难;知识点:继承)(15分)计算机正方体和长方体的体积:创建

一个含有abstract的求体积的vol()方法抽象基类shape;派生一个子类正方体Cube,实现父类抽象方法vol();创建子类Cube的对象,然后调用它的vol()方法;派生一个子类长方体Rectangle,实现父类抽象方法vol();创建子类Rectangle的对象,然后调用它的vol()方法;创建一个应用程序测试系统。 18、 (难易度:较难;知识点:继承)(15分)定义一个体育活动类(Sports)作为基

类,它有一个进行活动的方法play(),足球(Football)和篮球(Bascketball)都是体育活动类的衍生类。请在测试类(Test)中编写一个方法howToPlay(Sports sp),该方法要求传递一个Sports类型的参数。该方法的作用是:

1) 当传入的实例类型为Football时,控制台上应打印:足球是用脚踢的! 2) 当传入的实例类型为Bascketball时,控制台上应打印:篮球是用手打的! 在程序中调用howToPlay()验证代码。 19、 建立一个类和它的继承类,完成票价计算

基类:汽车

属性:距离、每公里的价格 方法:计算票价1

构造函数:初始化距离、每公里的价格

子类:豪华汽车 属性:空调附加费 方法:计算票价2

构造函数:空调附加费(注意构造函数的继承) (难易度:较难;知识点:继承)(15分) 20、 定义一个班级抽象类,有属性id、name,有一个抽象方法ShowInfo(),再定一个类

DriveClass继承myclass,在类中重写抽象类中的方法,输出id和name。调用这个方法。 (难易度:较难;知识点:继承)(15分)

21、 工资计算

教师:学历工资+岗位工资+职称工资+课时费 保卫:岗位工资+值班津贴 辅导员:学历工资+岗位工资

定义一个基类,3个继承类实现工资计算

(难易度:较难;知识点:继承)(15分)

22、 票价计算 ? 基类:普通汽车:

? 属性:距离、每公里的价格 ? 方法:计算票价

? 继承类:豪华汽车

? ? ? ? ?

属性:空调附加费 方法:计算票价

继承类:卧铺车

属性:每公里加的价格 方法:计算票价

? 分别使用重写的方法

(难易度:较难;知识点:继承)(15分)

23、 (难易度:较难;知识点:继承)(20分)简易学生信息管理(用抽象类实现多态) 编写一个应用程序,利用方法的重写和多态性进行学生信息的简单管理,输出类似如下格式的学生信息:(高职学生输出总成绩;成教学生输出总学分)。

王静:高职类2年级学生,总成绩:248 刘丽:成教类1年级学生,总学分:26

说明:(1) 定义一个抽象类Students,在其中添加6个属性,分别对应于学生类别、姓名、进校年数、基础课成绩、专业课成绩、实训课成绩; 1个方法,计算总成绩;1个抽象方法,用于显示学生信息。

(2) 定义1个派生类StudentA,继承自抽象类,用于实现“高职”类学生信息的处理,在其中实现基类的抽象方法。

(3) 定义1个派生类StudentB,继承自抽象类,用于实现“成教”类学生信息的处理,在其中实现基类的抽象方法,并添加计算总学分的方法。

(4) 总成绩 = 基础课+专业课+实训课 总学分 = 总成绩 / 10

总学分为整数 24、 接口与继承的区别?什么时候使用接口,什么时候使用继承? (难易度:较难;知识点:继承)(10分)

(1) 接口定义一个类型需要实现的方法,属性,索引和事件,包括可能的参数类型和返回值类型,而把具体的实现交由相应的类或结构来做,从而为组件提供多态能力。

(2) 继承常用于在一个现有父类的基础上的功能扩展,往往是我们将几个类中相同的成员提取出来放在父类中实现,然后在各自的子类中加以继承。 (3) 接口可以实现多接口继承,而继承只能实现单继承。

(4) 实现继承可继承父类型的实现,由于接口中没有定义方法的实现,因此必须实现继承后该接口的所有方法。 (5) 为父类型添加方法可能不影响使用继承自该类型实现的用户,而为接口添加方法导致用户必须为新方法添加实现。

(6) 当派生类和基类是is-a的关系是使用\继承\,典型案例\苹果 is-a 水果\,存在can-do的关系时使用\接口\

25、 什么是虚方法?什么是抽象方法?(难易度:较难;知识点:继承) (5分) 虚函数:没有实现的,可由子类继承并重写的函数。

抽象方法:在抽象类中定义的方法,没有方法体,规定其非虚子类必须实现的函数,必须被重写。

26、 请简要描述抽象类。(知识点:抽象类;难度:简单题) (10分)

用abstract修饰的类。抽象类可以包含实现的成员。未实现的成员隐含的是virtual属性,子类实现时必须用override关键字。

27、 重载与覆盖(重写)的区别?(难易度:较难;知识点:继承)(10分)

1、方法的重写是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系

2、重写只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、重写要求参数列表相同;重载要求参数列表不同。

4、重写关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调d用时的实参表与形参表来选择方法体的。 28、 写出下列程序的运行结果。(难易度:较难;知识点:继承)(15分) ///

/// 抽象基类 ///

public abstract class People {

public string name; public string sex;

public People(string out_name,string out_sex) {

name = out_name; sex = out_sex; } //

// 一个抽象方法,现在的人都上网,不同的人上网的目的是什么 // 基类的中抽象方法不用实现 //

public abstract void SearchInternet(); }

//======================================================== public class Student : People {

string StudentNum;

///

/// base(out_name,out_sex)同时去初始化抽象类中的两个数据成员 ///

public Student(string out_name, string out_sex, string out_stuNum) : base(out_name,out_sex) {

name = out_name; sex = out_sex;

StudentNum = out_stuNum;

}

public override void SearchInternet() {

Console.WriteLine(\这个人名叫\性别:\工号:\StudentNum + \他上网的目的是查找习题答案\\n\ } }

//=============================================================== public class Teacher : People {

string TeachNum;

public Teacher(string out_name, string out_sex, string out_Tnum) : base(out_name,out_sex) {

name = out_name; sex = out_sex;

TeachNum = out_Tnum; }

public override void SearchInternet() {

Console.WriteLine( \这个人名叫\性别:\工号:\TeachNum +\他上网的目的是发布习题答案\\n\ }

}

//========================================================= static void Main(string[] args) {

Student stu = new Student(\小明\男\ Teacher teacher = new Teacher(\男\ stu.SearchInternet(); teacher.SearchInternet(); Console.ReadLine();

}

答案:这个人名叫小明,性别:男,学号:120016101,他上网的目的是查找习题答案 这个人名叫Peter,性别:男,工号:20524,他上网的目的是发布习题答案 29、 虚函数的作用是什么? (难易度:简单;知识点:继承)(10分) (1)、使用虚函数是为了更好的定义类的方法。提供统一的方法定义。 (2)、就是可以在子类中被重写,当你继承一个类时,如果觉得父类中的虚函数不能满足你的要求,就可以在子类中重写这个函数了。 (3)、在派生类中重载时需要加上override关键字。

请解释virtual的含义?(难易度:较难;知识点:继承)

virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称作虚拟成员。虚拟成员的实现可由派生类中的重写成员更改。 30、

阅读下面的代码,写出运行结果。(难易度:难;知识点:继承)(15分)


面向对象程序设计题库 - (2013)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:外教史习题第14、15、16、17章

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: