面向对象专题练习

合集下载

面向对象程序设计练习题库与答案

面向对象程序设计练习题库与答案

面向对象程序设计练习题库与答案一、单选题(共36题,每题1分,共36分)1.下列关于静态内部类的说法,错误的是()A、静态内部类不能直接访问外部类的非静态成员B、静态内部类只能访问外部类的静态成员C、创建静态内部类的对象时,必须要先创建外部类的对象D、静态内部类,就是使用static关键字修饰的成员内部类正确答案:C2.以下选项中,哪个是FileInputStream的父类()A、FileB、FileOutputC、OutputStreamD、InputStream正确答案:D答案解析:FileInputStream是用来读取文件的字节流,属于InputStream类的子类。

3.下面关于FileInputStream和FileOutputStream的说法中,错误的是()A、FileInputStream是InputStream的子类,它是操作文件的字节输入流B、FileOutputStream是OutputStream的子类,它是操作文件的字节输出流C、如果使用FileOutputStream向一个已存在的文件中写入数据,那么写入的数据会被追加到该文件原先的数据后面D、使用FileInputStream读取文件数据时,必须保证要读取的文件存在并且是可读的正确答案:C答案解析:如果使用FileOutputStream向一个已存在的文件中写入数据,如果构造函数FileOutputStream的参数append的值是true,那么写入的数据才会追加到原先数据之后,否则的话,原先的数据会被清空,然后再写入新的数据。

4.下列关于类的说法中,错误的是()A、Java中创建类的关键字是class。

B、类中可以有属性与方法,属性用于描述对象的特征,方法用于描述对象的行为。

C、Java中对象的创建,首先需要定义出一个类。

D、一个类只能创建一个对象。

正确答案:D答案解析:类是对象的模板,对象是类的实例,一个类是可以创建多个对象的。

面向对象第18章练习题

面向对象第18章练习题

面向对象第18章练习题一、选择题1. 在面向对象编程中,下列哪个概念描述了对象的属性和行为?A. 类B. 状态C. 方法D. 继承A. classB. defC. objectD. static3. 在Java中,下列哪个方法用于创建对象?A. new()B. create()C. init()D. malloc()A. 子类可以继承父类的私有属性B. 子类可以继承多个父类C. 父类可以继承子类D. 子类可以重写父类的方法5. 在Python中,下列哪个关键字用于定义类的方法?A. functionB. methodC. defD. class二、填空题1. 在面向对象编程中,__①__是具有相同属性和方法的对象的集合。

2. __①__关键字用于定义一个类,而__②__关键字用于创建对象。

3. 在Java中,所有类都是__①__类的子类。

4. __①__是一种将一个类的属性和方法传递给另一个类的方式。

5. 在Python中,使用__①__关键字来定义类的属性。

三、判断题1. 一个类可以同时继承多个类。

()2. 构造方法用于初始化对象的属性。

()3. 在Java中,静态方法不能访问非静态成员。

()4. 子类可以调用父类的构造方法。

()5. 在Python中,类方法可以通过类名直接调用。

()四、简答题1. 请简要说明面向对象编程的三大特性。

2. 请解释什么是构造方法,并说明其在类中的作用。

3. 请举例说明如何在Java中实现方法的重写。

4. 请简要介绍Python中的类属性和实例属性。

5. 请说明如何使用继承来实现代码的复用。

五、编程题1. 定义一个矩形类(Rectangle),包含长(length)和宽(width)两个属性,以及计算面积(getArea)和周长(getPerimeter)的方法。

2. 定义一个学生类(Student),包含姓名(name)、年龄(age)和成绩(score)三个属性,以及一个显示学生信息(showInfo)的方法。

《面向对象》练习题.

《面向对象》练习题.

一、单项选择题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){}二、填空题(请在每小题的空格中填上正确答案。

面向对象考试题目和答案

面向对象考试题目和答案

面向对象考试题目和答案一、单项选择题(每题2分,共20分)1. 面向对象程序设计中,对象的状态由()来表示。

A. 属性B. 方法C. 消息D. 类答案:A2. 在面向对象程序设计中,封装的目的是()。

A. 隐藏对象的属性B. 隐藏对象的方法C. 隐藏对象的实现细节D. 隐藏对象的消息答案:C3. 面向对象程序设计中,继承的主要优点是()。

A. 重用代码B. 减少代码量C. 提高程序的可读性D. 所有以上选项答案:D4. 在面向对象程序设计中,多态性是指()。

A. 一个对象可以有多个类B. 一个类可以有多个对象C. 一个消息可以有多个行为D. 一个类可以有多个属性答案:C5. 在面向对象程序设计中,以下哪个不是类的组成部分()。

A. 属性B. 方法D. 函数答案:D6. 在面向对象程序设计中,以下哪个概念不是面向对象的核心概念()。

A. 封装B. 继承C. 多态D. 过程答案:D7. 在面向对象程序设计中,以下哪个概念是面向对象的核心概念之一()。

A. 函数B. 过程C. 消息D. 抽象8. 在面向对象程序设计中,以下哪个不是类的成员()。

A. 属性B. 方法C. 函数D. 消息答案:C9. 在面向对象程序设计中,以下哪个不是类的属性()。

A. 私有属性B. 保护属性C. 公共属性D. 全局属性答案:D10. 在面向对象程序设计中,以下哪个不是类的访问修饰符()。

B. 保护C. 公共D. 静态答案:D二、多项选择题(每题3分,共15分)1. 面向对象程序设计中,以下哪些是类的属性()。

A. 私有属性B. 保护属性C. 公共属性D. 全局属性答案:ABC2. 面向对象程序设计中,以下哪些是类的成员()。

A. 属性C. 函数D. 消息答案:ABD3. 面向对象程序设计中,以下哪些是类的访问修饰符()。

A. 私有B. 保护C. 公共D. 静态答案:ABC4. 面向对象程序设计中,以下哪些是面向对象的核心概念()。

面向对象练习题

面向对象练习题

面向对象练习题及答案一、用例图1.请就以下需求建立用例图:一个新的音像商店准备采用计算机系统向比较广泛的人群销售或租借录像带和光碟。

该音像商店将存有大约1000 盘录像带和500 张光碟,这些订购涉及多家订购商。

所有的录像带和光碟都有一个条码,可以使用条码扫描仪来支持销售和返还,客户会员卡也同时条码化。

客户可以预定录像带并在指定日期来取。

系统必须拥有灵活的搜索机制来回答客户的询问,包括关于该音像商店还没有进货的电影(但可能是已经请求订购了)。

评分标准:画图格式标准3 分,用例全面正确4 分,角色与用例之间的关系正确3 分2.试用用例图描述小型图书资料管理系统。

某学院打算开发一个小型图书资料管理系统MiniLibrary,该系统基于Internet实现教师和学生对各种图书资料的借阅、查询和管理。

图书管理员负责管理各种图书资料,查询图书资料信息,并进行图书的借阅管理。

注册用户可以通过Internet 随时查询图书资料信息和个人借阅情况,预订目前借不到的图书资料,并可以快捷地查找和浏览所需要的电子资料。

系统可以提供适当的浏览器供用户阅读电子文献资料。

3.试用用例图描述系统简介:航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。

各个旅行社把预定机票的旅客信息输入到系统中,系统为旅客安排航班。

当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单到航空公司交款取票,系统核对无误即打印出机票给旅客。

此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。

技术要求和限制条件(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。

(2)对于本系统还应补充一下功能:1)旅客延误了取票时间的处理2)航班取消后的处理4 .请就此需求建立功能模型:某报社采用面向对象技术实现报刊征订的计算机管理系统,该系统基本需求如下:报社发行多种刊物,每种刊物通过订单来征订,订单中有代码、名称、订期、单价、份数等项目,订户通过填写订单来订阅报刊。

面向对象测试题及答案

面向对象测试题及答案

面向对象测试题及答案一、选择题(每题2分,共20分)1. 面向对象编程(OOP)的核心概念不包括以下哪一项?A. 类B. 继承C. 多态D. 过程2. 在Java中,以下哪个关键字用于定义类?A. classB. typeC. structD. interface3. 下列哪个选项不是Java中访问控制的关键字?A. publicB. privateC. protectedD. global4. 封装是面向对象编程的一个重要特性,它主要指的是:A. 将数据和操作数据的方法组合在一起B. 将所有数据都设为公开访问C. 只允许通过特定的方法访问数据D. 将数据和方法分离5. 在Java中,以下哪个不是构造方法的特点?A. 与类名相同B. 没有返回类型C. 可以重载D. 可以被继承6. 继承在面向对象编程中允许:A. 一个类只能继承一个类B. 一个类可以继承多个类C. 一个类可以继承多个接口D. 一个类可以同时继承多个类和接口7. 接口在Java中的主要作用是:A. 定义类B. 实现多继承C. 定义方法的实现D. 定义方法的签名8. 以下哪个是Java中实现多态的方式?A. 继承B. 接口C. 重载D. 重写9. 抽象类在Java中不能:A. 被实例化B. 包含抽象方法C. 包含具体方法D. 被继承10. 下列哪个不是Java集合框架中接口?A. ListB. SetC. MapD. Array二、简答题(每题5分,共30分)1. 简述面向对象编程的三大特性。

2. 解释什么是多态,并给出一个Java中多态的例子。

3. 什么是封装?封装在Java中是如何实现的?4. 什么是接口?接口和抽象类有什么区别?5. 什么是构造方法?构造方法的作用是什么?6. 什么是继承?继承在Java中是如何实现的?三、编程题(每题25分,共50分)1. 编写一个Java程序,定义一个名为`Car`的类,包含以下属性和方法:- 属性:品牌(String类型),颜色(String类型),速度(int 类型)- 方法:启动汽车(startCar),加速(accelerate),减速(decelerate)2. 在上述`Car`类的基础上,创建一个名为`ElectricCar`的子类,继承`Car`类,并添加一个额外的属性:电池电量(int类型),并重写`startCar`方法以显示电动汽车启动的信息。

面向对象 练习题

面向对象 练习题

面向对象练习题面向对象练习题面向对象编程是一种常用的编程范式,它将程序设计问题分解成一系列的对象,每个对象都有自己的属性和方法。

面向对象编程的核心思想是把现实世界中的事物抽象成程序中的对象,并通过对象之间的交互来解决问题。

为了提升对面向对象编程的理解和掌握,下面将给出一些面向对象编程的练习题。

1. 设计一个汽车类,要求具有以下属性和方法:- 属性:品牌、颜色、价格- 方法:启动、加速、刹车、熄火2. 设计一个学生类,要求具有以下属性和方法:- 属性:姓名、年龄、性别、成绩- 方法:学习、休息、考试、查看成绩3. 设计一个图书类,要求具有以下属性和方法:- 属性:书名、作者、出版社、价格- 方法:借阅、归还、查看借阅状态、查看图书信息4. 设计一个银行账户类,要求具有以下属性和方法:- 属性:账户名、账号、余额- 方法:存款、取款、查询余额、转账5. 设计一个矩形类,要求具有以下属性和方法:- 属性:宽度、高度- 方法:计算面积、计算周长、判断是否为正方形这些练习题涵盖了面向对象编程中常见的概念和操作。

通过解答这些题目,可以加深对面向对象编程的理解,并提升对类、对象、属性和方法的使用熟练度。

在解答这些题目时,可以先思考每个类应该具有哪些属性和方法,然后根据需求进行实现。

可以使用任何编程语言来完成这些练习题,但建议使用面向对象编程语言如Java、Python等。

除了以上的练习题,还可以尝试设计更复杂的类和对象,如实现一个电商平台的商品类、用户类和订单类,或者实现一个图形界面的计算器类。

通过不断练习和实践,可以逐渐掌握面向对象编程的技巧和思维方式。

总之,面向对象编程是一种重要的编程范式,掌握它对于提升编程能力和解决实际问题非常有帮助。

通过解答上述练习题,可以加深对面向对象编程的理解和掌握,为以后的编程工作打下坚实的基础。

希望大家能够充分利用这些练习题,不断提升自己的编程能力。

java面向对象练习题

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

**专题5 面向对象一、填空题1.如果一个方法不返回任何值,则该方法的返回值类型为void 。

(//有无返回值的意义何在)2.如果子类中的某个方法名、返回值类型和_参数列表_____与父类中的某个方法完全一致,则称子类中的这个方法覆盖了父类的同名方法。

3.接口中所有的属性均为_public_、_final_____和_static__的,方法(public abstract )4.抽象方法是一种仅有方法声明,没有具体方法体和操作实现的方法,该方法必须在具体类之中定义。

5.在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。

6.一般Java程序的类主体由两部分组成:一部分是属性,另一部分是方法。

7.分别用class 关键字来定义类,用new 关键字来分配实例存储空间。

8.当一个类的修饰符为final 时,说明该类不能被继承,即不能有子类。

9.在Java中,能实现多重继承效果的方式是接口。

二、选择题1.方法内定义的变量(B)。

A.一定在方法内所有位置可见B.可能在方法的局部位置可见(for循环)C.在方法外可以使用D.在方法外可见2.方法的形参()。

A.可以没有B.至少有一个C.必须定义多个形参D.只能是简单变量3.return语句()。

A.不能用来返回对象B.只可以返回数值C.方法都必须含有D.一个方法中可以有多个(但是返回只有一个)4.main()方法的返回值类型是()A.boolean B.intC.void D.static5.编译并运行下面的程序,运行结果是()。

public class A{public static void main(String args[]){A a=new A();a.method(8);}void method(int i){System.out.println(“int: ”+i);}void method(long i){System.out.println(“long: ”+i);}A.程序可以编译运行,输出结果为:“int: 8”B.程序可以编译运行,输出结果为:“long: 8”C.程序有编译错误,因为两个method()方法必须定义为静态(static)的D.程序可以编译运行,但是没有输出6.能作为类及其成员的修饰符是()。

A.interface B.classC.protected D.public7.下列方法定义中,方法头不正确的是()。

A.public static x(double a){…} B.public static int x(double y){…} C.void x(double d){…} D.public int x(){…}8.构造方法在()时被调用。

A.类定义时B.使用对象的变量时C.调用对象方法时D.创建对象时9.下列哪个类声明是正确的()。

A.public abstract class Car{…}B.abstract private move(){…} C.protected private number; D.abstract final class H1{…} 10.下列不属于面向对象程序设计的基本特征的是()。

A.抽象B.封装C.继承D.静态11.请看下面的程序段class Person{String name,department;int age;public Person(String n){name=n;}public Person(String n,int a){name=n; age=a;}public Person(String n, String d, int a ){//doing the same as two arguments version if constructer}下面那个选项可以添加到// doing the same……处(C )A.Person(n,a)B.this(Person(n,a))C.this(n,a) D.this(name.age)12.请看下面的程序段class Test{private int m;public static void fun(){//some code}}方法fun()如何来访问变量m( C )A.将private int m 改成protected int m B.将private int m 改成public int mC.将private int m 改成static int m D.将private int m 改成int m 13.有一个类A,对于其构造函数的声明正确的是()。

A.void A(int x){…}B.public A(int x){…}C.A A(int x){…}D.int A(int x){…}14.请看下面的程序段public class Test{long a[]=new long[10];//这里没有static修饰pubic static void main(String args[]){System.out.println(a[6]);}}哪一个选项是正确的( C )。

A.不输出任何内容B.输出0C.当编译时有错误出现D.当运行时有错误出现15.关键字(B )表明一个对象或变量在初始化后不能修改。

A.extends B.finalC.this D.finalize16.声明为static的方法不能访问(C )类成员。

A.超类B.子类C.非static D.用户自定义类17.定义类A如下:class A{int a,b,c;public void B(int x,int y, int z){ a=x;b=y;c=z;}}下面对方法B的重载哪些是正确的(C )。

A.public void A(int x1,int y1, int z1){ a=x1;b=y1;c=z1;}B.public void B(int x1,int y1, int z1){ a=x1;b=y1;c=z1;}C.public void B(int x,int y){ a=x;b=y;c=0;}D.public B(int x,int y, int z){ a=x;b=y;c=z;}18.编译运行下面的程序,结果是()。

public class A{public static void main(String args[]){B b=new B();b.test();}void test(){System.out.print(“A”);}}class B extends A{void test(){super.test();System.out.print(“B”);}}A.产生编译错误B.代码可以编译运行,并输出结果:ABC.代码可以编译运行,但没有输出D.编译没有错误,但会产生运行时异常19.已知类关系如下:Class Employee{}Class Manager extends Employee{}Class Director extends Employee{}则下列语句正确的是:()。

A.Employee e=new Manager();B.Director d=new Manager(); C.Director d =new Employee ();D.Manager m=new Director (); 20.接口是Java面向对象的实现机制之一,以下说法正确的是(B )。

A.Java支持多重继承,一个类可以实现多个接口B.Java只支持单重继承,一个类可以实现多个接口C.Java只支持单重继承,一个类可以实现一个接口D.Java支持多重继承,但一个类只可以实现一个接口21.下列方法的声明中不合法的是。

A.float area( ){…}B.void area( ){…}C.area{…}D.int area(int r){…}A. B.ng C.java.sql D.java.util23、调用构造方法是在。

A.类定义时B.创建对象时C.调用对象的方法时D.使用对象的变量时A.任何地方B.构造方法的第一条语句C.构造方法的最后一条语句D.无法在子类构造方法中调用父类的构造方法25、关于Java中的继承,下列说法错误的是。

A.继承是面向对象编程的核心特征,通过继承可以更有效地组织程序结构。

B.继承使得程序员可以在原有类的基础上很快设计出一个功能更强的新类,而不必从头开始,避免了工作上的重复。

C.每一次继承时,子类都会自动拥有父类的属性和方法,同时也可以加入自己的一些特性,使得它更具体、功能更强大。

D.继承一般有多重继承和单一继承两种方式,在单一继承中每一个类最多只有一个父类,而多重继承则可以有多个父类。

Java中的类都采用多重继承。

26、当方法中的局部变量与成员变量同名时,必须使用下列哪一个关键字指出成员变量 C 。

A.static B.super C.this D.new27、什么样的方法不能被重写B 。

A.私有(private)方法B.最终(final)方法C.受保护(protected)的方法D.以上都不对28、下列有关抽象类与接口的叙述中正确的是哪一个 C 。

A.抽象类中必须有抽象方法,接口中也必须有抽象方法B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法D.抽象类中的变量定义时必须初始化,而接口中不是29、从下列程序中你发现了几处错误 D 。

abstract class A{abstract void f(){};//抽象方法没有方法体。

public abstract void k();}class B extends A{protected void f(){ }//子类修饰符必须大于父类void k(){ //子类修饰符必须大于父类System.out.print("I am subclass");}public static void main(String[] args) {A a=new A();a.f();//可以在本类被调用a.k();}}A.1B.2C.3D.430、下列程序运行的结果是A 。

interface InterfaceA{ //接口AString s="good ";void f();}class ClassA implements InterfaceA{public void f(){ //修饰符必须大于接口的范围,对了System.out.print(s);}}class ClassB{void g(InterfaceA a){ //g方法传入的a为interfaceA类(接口类型引用)a.f();}}public class E {public static void main(String[] args) {ClassB b=new ClassB();b.g(new ClassA());}}A.good B.编译正确,但无运行结果C.编译错误:b.g(new ClassA())D.以上都不对31、下列类的声明中不合法的是 A 。

相关文档
最新文档