面向对象基础强化练习
c面向对象程序设计课后习题

c面向对象程序设计课后习题面向对象程序设计是一种以对象为基本单位的编程范式,它强调数据和行为的封装、继承和多态性。
以下是一些面向对象程序设计的课后习题,旨在帮助学生巩固和深化对面向对象概念的理解。
习题一:封装的实现1. 定义一个类 `Person`,包含私有属性 `name` 和 `age`。
2. 实现公共方法 `getName()` 和 `setName(String name)` 来获取和设置 `name` 属性。
3. 实现公共方法 `getAge()` 和 `setAge(int age)` 来获取和设置`age` 属性。
4. 添加一个构造器,允许在创建 `Person` 对象时初始化 `name` 和`age`。
习题二:继承的应用1. 定义一个基类 `Vehicle`,包含属性 `speed` 和方法 `move()`.2. 创建一个派生类 `Car`,继承自 `Vehicle`,添加属性 `wheels` 和 `color`.3. 重写 `move()` 方法,以反映汽车的移动特性。
4. 添加一个构造器,允许初始化 `Car` 对象的所有属性。
习题三:多态性的使用1. 定义一个接口 `Animal`,包含一个抽象方法 `makeSound()`.2. 创建几个实现类,如 `Dog`,`Cat`,`Bird`,它们都实现了`Animal` 接口。
3. 为每个类实现 `makeSound()` 方法,以产生不同的声音。
4. 编写一个测试类,创建 `Animal` 类型的数组,包含不同种类的动物对象,并调用 `makeSound()` 方法。
习题四:抽象类的使用1. 定义一个抽象类 `Shape`,包含抽象方法 `calculateArea()`.2. 创建几个具体类,如 `Circle`,`Rectangle`,`Triangle`,它们继承自 `Shape` 并实现 `calculateArea()` 方法。
《面向对象》练习题.

一、单项选择题1. 类的构造函数被自动调用执行的情况是在定义该类的()A. 成员函数时B. 数据成员时C. 对象时D. 友元函数时2. 假定一个类的构造函数为“A(int i=4, int j=0) {a=i;b=j;}”, 则执行“A x (1);”语句后,x.a和x.b的值分别为()A. 1和0B. 1和4C. 4和0D. 4和13. 所谓多态性是指()A. 不同的对象调用不同名称的函数B. 不同的对象调用相同名称的函数C. 一个对象调用不同名称的函数D. 一个对象调用不同名称的对象4. 构造函数不具备的特征是()A. 构造函数的函数名与类名相同B. 构造函数可以重载C. 构造函数可以设置默认参数D. 构造函数必须指定类型说明5. 在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()A. 受限制B. 保持不变C. 受保护D. 不受保护6. C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念7. 在类中说明的成员可以使用关键字的是()A. publicB. externC. cpuD. register8. C++语言中所有在函数中定义的变量,连同形式参数,都属于()A. 全局变量B. 局部变量C. 静态变量D. 函数9. 在私有继承的情况下,基类成员在派生类中的访问权限()A. 受限制B. 保持不变C. 为共有D. 为保护10. 使用引用作为函数参数,下列说法正确的是()A. 实参是形参的备份B. 实参与形参无联系C. 形参是实参的备份D. 实参与形参是同一对象11. C++的继承性允许派生类继承基类的()A. 部分特性,并允许增加新的特性或重定义基类的特性B. 部分特性,但不允许增加新的特性或重定义基类的特性C. 所有特性,并允许增加新的特性或重定义基类的特性D. 所有特性,但不允许增加新的特性或重定义基类的特性12. 以下基类中的成员函数表示纯虚函数的是()A. virtual void tt()=0B. void tt(int)=0C. virtual void tt(int)D. virtual void tt(int){}二、填空题(请在每小题的空格中填上正确答案。
面向对象基础-参考答案

一、【必做题】1.(1)定义一个人类Person:1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX”2)有三个属性:名字、身高、体重(2)定义一个PersonCreate类:1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.742)分别调用对象的sayHello()方法。
(答案:Person.java、PersonCreate.java)2.(1)定义一个人类Person:1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX”2)有三个属性:名字、身高、体重3)通过构造方法,分别给三个属性赋值(2)定义一个Constructor类:1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.742)分别调用对象的sayHello()方法。
(答案:Constructor.java、或者是Person3.java)3.(1)定义一个矩形类Rectangle:1)定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。
2)有2个属性:长length、宽width3)通过构造方法Rectangle(int width, int length),分别给两个属性赋值(答案:Rectangle.java)4.定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个构造器Point()和Point(int x0,y0),以及一个movePoint(int dx,int dy)方法实现点的位置移动。
()public class Point {private int x0;private int y0;public Point(){}public Point(int x0,int y0){t his.x0=x0;this.y0=y0;}public void movePoint(int dx,int dy){t his.x0 = this.x0 + dx;t his.y0 = this.y0 + dy;}}5.编写一个程序,创建两个Point对象p1、p2,分别调研movePoint方法后,打印p1和p2的坐标。
面向对象练习题

面向对象练习题及答案一、用例图1.请就以下需求建立用例图:一个新的音像商店准备采用计算机系统向比较广泛的人群销售或租借录像带和光碟。
该音像商店将存有大约1000 盘录像带和500 张光碟,这些订购涉及多家订购商。
所有的录像带和光碟都有一个条码,可以使用条码扫描仪来支持销售和返还,客户会员卡也同时条码化。
客户可以预定录像带并在指定日期来取。
系统必须拥有灵活的搜索机制来回答客户的询问,包括关于该音像商店还没有进货的电影(但可能是已经请求订购了)。
评分标准:画图格式标准3 分,用例全面正确4 分,角色与用例之间的关系正确3 分2.试用用例图描述小型图书资料管理系统。
某学院打算开发一个小型图书资料管理系统MiniLibrary,该系统基于Internet实现教师和学生对各种图书资料的借阅、查询和管理。
图书管理员负责管理各种图书资料,查询图书资料信息,并进行图书的借阅管理。
注册用户可以通过Internet 随时查询图书资料信息和个人借阅情况,预订目前借不到的图书资料,并可以快捷地查找和浏览所需要的电子资料。
系统可以提供适当的浏览器供用户阅读电子文献资料。
3.试用用例图描述系统简介:航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。
各个旅行社把预定机票的旅客信息输入到系统中,系统为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单到航空公司交款取票,系统核对无误即打印出机票给旅客。
此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。
技术要求和限制条件(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。
(2)对于本系统还应补充一下功能:1)旅客延误了取票时间的处理2)航班取消后的处理4 .请就此需求建立功能模型:某报社采用面向对象技术实现报刊征订的计算机管理系统,该系统基本需求如下:报社发行多种刊物,每种刊物通过订单来征订,订单中有代码、名称、订期、单价、份数等项目,订户通过填写订单来订阅报刊。
面向对象基础测试题和答案

共40 道选择题,每题 2.5 分。
多选题有错则全错,全对才满分.面向对象部分测试题1. 下面描述函数重写错误的是 CA. 要有子类继承或实现B. 子类方法的权限必须大于等于父类的权限C. 父类中被private 权限修饰的方法可以被子类重写D. 子类重写接口中的抽象方法,子类的方法权限必须是public 的2. 关于封装下面介绍错误的是( D )。
A. 封装将变化隔离B. 封装提高重用性。
C. 封装安全性D. 只有被private 修饰才叫做封装3. 试图编译运行下面的代码会发生什么情况 Dpublic class MyClass{static int i;public static void main(String[] args){System.out.println(i);}}A. 错误,变量i 没有被初始化B. 输出nullC. 输出1D. 输出04. 在Java 中,下面对于构造函数的描述正确的是(D)。
A. 类必须显式定义构造函数B. 构造函数的返回类型是voidC. 构造函数和类有相同的名称,并且不能带任何参数D. 一个类可以定义多个构造函数5. 下面Java 代码的运行结果是( C )。
class Penguin {private String name=null; // 名字private int health=0; // 健康值private String sex=null; // 性别public void Penguin() { //是一般方法,不是构造方法health = 10;sex = " 雄";System.out.println(" 执行构造方法。
");}public void print() {System.out.println(" 企鹅的名字是" + name +" ,健康值是" + health + " ,性别是" + sex+ " 。
javaoop练习题

一、面向对象基础1. 简述面向对象编程的特点。
2. 解释类和对象的关系。
3. 什么是封装?举例说明。
4. 什么是继承?举例说明。
5. 什么是多态?举例说明。
6. 简述Java中的访问控制符。
7. 什么是构造函数?举例说明。
8. 什么是析构函数?举例说明。
9. 什么是抽象类?举例说明。
10. 什么是接口?举例说明。
二、类和对象1. 定义一个名为Person的类,包含姓名、年龄和性别属性,以及相应的构造函数和get/set方法。
2. 定义一个名为Student的类,继承自Person类,增加学号属性,以及相应的构造函数和get/set方法。
3. 定义一个名为Teacher的类,继承自Person类,增加职称属性,以及相应的构造函数和get/set方法。
4. 定义一个名为Student的类,实现一个名为Study的接口,包含一个名为study的方法。
5. 定义一个名为Teacher的类,实现一个名为Teach的接口,包含一个名为teach的方法。
6. 定义一个名为Car的类,包含引擎、轮胎和油箱属性,以及相应的构造函数和get/set方法。
7. 定义一个名为Engine的类,包含功率和转速属性,以及相应的构造函数和get/set方法。
8. 定义一个名为Tyre的类,包含品牌和尺寸属性,以及相应的构造函数和get/set方法。
9. 定义一个名为OilTank的类,包含容量和油量属性,以及相应的构造函数和get/set方法。
10. 定义一个名为Rectangle的类,包含长和宽属性,以及计算面积和周长的方法。
三、继承和多态1. 定义一个名为Animal的抽象类,包含一个抽象方法名为eat。
2. 定义一个名为Dog的类,继承自Animal类,实现eat方法。
3. 定义一个名为Cat的类,继承自Animal类,实现eat方法。
4. 定义一个名为Bird的类,继承自Animal类,实现eat方法。
5. 定义一个名为Mammal的类,继承自Animal类,包含一个方法名为milk。
面向对象 练习题

面向对象练习题面向对象练习题面向对象编程是一种常用的编程范式,它将程序设计问题分解成一系列的对象,每个对象都有自己的属性和方法。
面向对象编程的核心思想是把现实世界中的事物抽象成程序中的对象,并通过对象之间的交互来解决问题。
为了提升对面向对象编程的理解和掌握,下面将给出一些面向对象编程的练习题。
1. 设计一个汽车类,要求具有以下属性和方法:- 属性:品牌、颜色、价格- 方法:启动、加速、刹车、熄火2. 设计一个学生类,要求具有以下属性和方法:- 属性:姓名、年龄、性别、成绩- 方法:学习、休息、考试、查看成绩3. 设计一个图书类,要求具有以下属性和方法:- 属性:书名、作者、出版社、价格- 方法:借阅、归还、查看借阅状态、查看图书信息4. 设计一个银行账户类,要求具有以下属性和方法:- 属性:账户名、账号、余额- 方法:存款、取款、查询余额、转账5. 设计一个矩形类,要求具有以下属性和方法:- 属性:宽度、高度- 方法:计算面积、计算周长、判断是否为正方形这些练习题涵盖了面向对象编程中常见的概念和操作。
通过解答这些题目,可以加深对面向对象编程的理解,并提升对类、对象、属性和方法的使用熟练度。
在解答这些题目时,可以先思考每个类应该具有哪些属性和方法,然后根据需求进行实现。
可以使用任何编程语言来完成这些练习题,但建议使用面向对象编程语言如Java、Python等。
除了以上的练习题,还可以尝试设计更复杂的类和对象,如实现一个电商平台的商品类、用户类和订单类,或者实现一个图形界面的计算器类。
通过不断练习和实践,可以逐渐掌握面向对象编程的技巧和思维方式。
总之,面向对象编程是一种重要的编程范式,掌握它对于提升编程能力和解决实际问题非常有帮助。
通过解答上述练习题,可以加深对面向对象编程的理解和掌握,为以后的编程工作打下坚实的基础。
希望大家能够充分利用这些练习题,不断提升自己的编程能力。
java面向对象练习题

java面向对象练习题# Java面向对象练习题一、选择题1. 在Java中,以下哪个关键字用于定义类的访问权限为“仅包内可见”?- A. public- B. private- C. protected- D. 默认(不写访问修饰符)2. 以下哪个是Java中的构造方法?- A. 与类名相同,没有返回类型的方法- B. 与类名不同,没有返回类型的方法- C. 与类名相同,有返回类型的方法- D. 与类名不同,有返回类型的方法3. 在Java中,哪个关键字用于实现类的继承?- A. extends- B. implements- C. override- D. abstract4. 以下哪个是Java中类的成员变量?- A. 局部变量- B. 实例变量- C. 静态变量- D. 方法参数5. 以下哪个是Java中的多态性?- A. 接口- B. 继承- C. 封装- D. 抽象类二、简答题1. 解释Java中的封装性,并给出一个封装的类的例子。
2. 描述Java中接口和抽象类的区别。
3. 什么是Java中的继承?请举例说明如何使用继承。
三、编程题1. 创建一个名为`Person`的类,包含姓名(name)、年龄(age)和性别(gender)三个属性。
为每个属性提供getter和setter方法。
2. 编写一个名为`Student`的类,它继承自`Person`类,并添加一个名为`studentID`的属性。
为`studentID`提供getter和setter方法,并重写`toString`方法以返回学生的详细信息。
3. 创建一个接口`Movable`,包含一个方法`move()`。
然后创建一个名为`Car`的类实现该接口,并提供`move`方法的具体实现。
四、综合应用题1. 设计一个简单的银行账户系统,包含以下类:- `Account`:基本账户类,包含账户ID、账户余额和存款(deposit)与取款(withdraw)方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对象的创建和使用)
5. 编写一个程序,创建两个 Point 对象 p1、p2,分别调研 movePoint 方法后,打印 p1 和 p2 的坐标。 (知识点:对象的创建和使用) 6. (1)定义一个动物类 Creature(知识点:对象的创建和使用) 1)定义一个方法 setSnarl(Cat cat)可以设置动物发出猫的声音 2)setSnarl(Dog dog)可以设置动物发出狗的声音 3)定义一个 outPut()方法,可以输出动物的声音 (2)要求定义一个猫类 Cat,具有猫的声音,将猫类传入动物类 Creature 的吼叫方法 setSnarl(Cat cat)可以设置动物发出猫的声音 (3)要求定义一个狗类 Dog,具有狗的声音,将狗类传入动物类 Creature 的吼叫方法 setSnarlDog dog)可以设置动物发出狗的声音 (4)定义一个 Sound 类,在 main 方法里调用 Creature 类的 setSnarl()和 outPut()方法分 别设置动物的声音和输出动物的声音 效果显示:
一、 【必做题】
Ⅰ.选择题 1、列选项中哪个是类 public class Test { }的默认构造方法___?(知识点:构造 器) A. Test(); B. Test(void); C. public Test(); D. public Test(void); E. public void Test(); 2、给定下列代码的执行结果是____?(知识点:构造器) public class A { void A() { System.out.println(“Class A”); } public static void main(String[] args) { new A(); } } A. Class A B. 在第 2 行处抛出异常 C. 编译错误 D. 在第 6 行处抛出异常 E. 代码执行后没有输出 3、给定以下代码 : (知识点:构造器) 1. public class ConstOver { 2. public ConstOver (int x, int y, int z) { 3. } 4. } 下列选项中,哪些可以在 ConsOver 类中定义成重载的构造方法____: A. ConstOver ( ) { } B. int ConstOver ( ) { } C. ConstOver (int z, int y, byte x) { } D. Object ConstOver (int x, int y, int z) { } E. void ConstOver (byte x, byte y, byte z) { } 4 、 以 下 代 码 的 执 行 结 果 是 _____ ? ( 知 识 点 : static 使 用 )
Person p=new Person(); Person q=new Person(); p.sayHello(); q.sayHello(); } } class Person{ static int eyeNum; String name; int age; double height;
{
//非静态块 System.out.println("non-static block"); name="zhangsan"; age=18; height=1.75;
7.定义一个圆类 Circle,描述圆对象。圆有一个属性 radius 表示半径,还有一个 findArea 方法用于计算圆的面积。定义一个测试类。给半径赋值为 5,并且输出圆的面积。
(知识点:对象的创建和使用) 8、定义一个笔记本类,该类有颜色(char)和 cpu 型号(int)两个属性。 (知 识点:对象的创建和使用)
二、 【选做题】
1、 ( 1 )编 写 一个时 间 类 MyTime , 包含 一个构造方法, 3 个 私 有成员变量 hour,minute,second 以及与它们相对应的 get 与 set 方法(如 hour 有 getHour 和 setHour 方法,分别表示获得和设置 hour) ,再加上一个转换成字符串的方法 toString。 (知识点:对象的创建和使用) ( 2 ) 编 写 一 个 日 期 类 MyDate , 包 含 一 个 构 造 方 法 , 3 个 私 有 成 员 变 量 year,month,day 以及与它们相对应的 get 与 set 方法,再加上一个转换成字符串 的方法 toString。 (知识点:对象的创建和使用) (3)编写一个 FullTime 类,包含一个 MyTime 类型的私有成员变量 time 和一 个 MyDate 类型的成员变量 date,以及与它们相对应的 get 与 set 方法,一个构 造方法,再加上一个转换成字符串的方法 toString。 (知识点:对象的创建和使 用) (4)假设当前时间是 2002 年 7 月 30 日 22 点 12 分 35 秒,编写一个程序,用 FullTime 类设置时间为以上时间,并打印。 (知识点:对象的创建和使用)
2、设计一个类 Student,该类包括姓名、学号和成绩。设计一个方法,按照成 绩从高到低的顺序输出姓名、学号和成绩信息。 (知识点:对象的创建pi = 3.14; int radius=100; public static void main(String[ ] args) { System.out.println( __ ); //打印 pi __________________ ; System.out.println(___); //打印 radius } } 2、下面的程序有错误,请修正,并说明原因: (知识点:static 使用) public class CircleStatic { static double pi=3.14; int radius=100; public static void main(String[] args) { System.out.println(pi); System.out.println(radius); Circle c=new Circle(); System.out.println(c.radius); } } class Circle { static double pi=3.14; int radius; public Circle(){ } public Circle(int r) { radius=r; } public static double getPi() { return pi; } public void static showArea() { System.out.println(pi*radius*radius); } } 3、分析如下程序,写出执行结果: (知识点:对象的创建和使用、静态块的使用) public class BlockDemo{ public static void main(String[] args){
2. (1)定义一个人类 Person: (知识点:对象的创建和使用) 1)定义一个方法 sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 3)通过构造方法,分别给三个属性赋值 (2)定义一个 Constructor 类: 1)创建两个对象,分别是 zhangsan,33 岁,1.73;lishi,44,1.74 2)分别调用对象的 sayHello()方法。3. (1)定义一个矩形类 Rectangle: 1)定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、 面积、周长。 2)有 2 个属性:长 length、宽 width 3)通过构造方法 Rectangle(int width, int length),分别给两个属性赋值 4. 定义一个点类 Point,包含 2 个成员变量 x、y 分别表示 x 和 y 坐标,2 个构造器 Point() 和 Point(int x0,y0),以及一个 movePoint(int dx,int dy)方法实现点的位置移动。 (知识点:
1. (1)定义一个人类 Person: (知识点:对象的创建和使用) 1)定义一个方法 sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 (2)定义一个 PersonCreate 类: 1)创建两个对象,分别是 zhangsan,33 岁,1.73;lishi,44,1.74 2)分别调用对象的 sayHello()方法。
(1)无参和有参的两个构造方法;有参构造方法可以在创建对象的同时为每个 属性赋值; (2) 输出笔记本信息的方法 然后编写一个测试类,测试笔记本类的各个方法。 9.定义一个汽车类 Vehicle,要求如下: (知识点:对象的创建和使用)
(1) 属性包括: 汽车品牌 brand (String 类型) 、 颜色 color (String 类型) 和速度 speed (double 类型) ,并且所有属性为私有。 (2)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始 值必须为 0) 。 (3)为私有属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。 (4)定义一个一般方法 run(),用打印语句描述汽车奔跑的功能 定义测试类 VehicleTest,在其 main 方法中创建一个品牌为“benz” 、颜色为“black”的汽车。 10. 定义一个时间类,提供设定时间和显示时间的方法,其中设定时间的方法需要校验数 据的正确性,并在 main 方法中验证。 (知识点:对象的创建和使用)
}
static //静态块 { System.out.println("static block"); eyeNum=2; }
public Person(){ System.out.println("aaaaaaaaaaaa"); } public void sayHello(){ System.out.println("Hello, my name is "+name); } } Ⅲ.编程题