面向对象程序设计Java题库.docx
- 文档编号:9219423
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:52
- 大小:34.39KB
面向对象程序设计Java题库.docx
《面向对象程序设计Java题库.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计Java题库.docx(52页珍藏版)》请在冰豆网上搜索。
面向对象程序设计Java题库
面向对象程序设计(java)题库
抽题规范:
(1)此题库共75道题,抽8道作为期末考试题。
其中,易8道,较易33道,较难18道,难16道.
(2)按题型,第一大题抽4道,每道10分;第二大题抽2道,每道10分;第三大题抽1道,每道20分;第四大题抽1道,每道20分。
(3)按难易程度:
易(1道)、较易(4道)、较难(2道)、难(1道)。
1、解答题(共40道,抽4道,每道10分,共40分)
1.面向对象有哪三大特征?
(易)
2.什么是类?
(易)
3.什么是对象?
(易)
4.类和对象的区别是什么?
(较易)
5.简述Java的封装性,如何在Java中实现封装(较难)
6.构造方法有哪些特点(较易)
7.构造方法的作用是什么?
(较易)
8.this在程序中所代表的意思(易)
9.继承的作用是什么?
(易)
10.Java支持多继承吗?
(易)
11.子类可以继承父类的哪些成员?
(较难)
12.简述构造子类对象时子类和父类构造方法执行顺序(较易)
13.什么是方法的重载,如何选择被重载的方法?
(较易)
14.什么是方法的重写,如何选择被重写的方法?
(较难)
15.简述重载和覆盖的区别(较易)
16.什么是成员的隐藏?
如何访问被隐藏了的父类成员?
(较易)
17.简述this和super的区别(较难)
18.简述面向对象的多态性(较易)
19.简述实例变量和类变量的区别(较易)
20.简述静态方法和实例方法的区别(较易)
21.简述按值传递和按址传递的区别(较难)
22.什么是抽象类?
抽象类中一定有抽象方法吗?
(较难)
23.什么是接口?
接口中的成员有什么特点?
(较易)
24.简述抽象类和接口的区别(较易)
25.extends和implements的区别是什么?
(较易)
26.final可以用在哪些地方,分别代表什么意思?
(较易)
27.static可以用在哪些地方,分别代表什么意思?
(较易)
28.静态代码块的作用是什么?
它被执行几次?
(较易)
29.Java中包的作用是什么(易)
30.在Java中,import和package的区别?
(易)
31.public,protected,default,private的区别(较易)
32.内部类的作用是什么?
内部类常用在哪里?
(较难)
33.简述异常处理机制(较难)
34.简述throw和throws的区别(较易)
35.简述final和finally的区别(较易)
36.列出三个常见的异常并说明其作用(较易)
37.简述String和StringBuffer的区别(较易)
38.集合Collection包含哪两大子接口?
它们的区别是什么?
(较易)
39.如何把一个字节流转换成字符流?
(较易)
40.让一个类成为线程有哪两种方式?
(较易)
2、单项编程(共25题,抽2题,每题10分,共20分)
1.设计一个矩形类,有长和宽两个属性,能够计算每一个矩形的面积和周长;再编写一个主类,在其主方法main中创建一个具体的矩形,求出该矩形的周长和面积。
(较易)
2.
(1)设计一个圆类,有一个属性半径,能够计算每一个圆的面积和周长;再编写一个主类,在其主方法main中创建一个具体的圆形,求出该圆形的周长和面积。
(较易)
3.设计一个盒子类Box,它有长、宽、高三个私有成员属性,包含无参数和有参数的构造方法,分别实现设置和获取属性的setter和getter方法,以及求盒子体积的公有方法。
其中,构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。
再编写一个主类BoxTest,在其主方法main()中创建若干个Box对象,输出其长、宽、高及其体积的值。
(较易)
4.设计一个人类,有姓名、年龄、性别、身高、体重属性,以及吃饭、穿衣服、跑步行为;再编写一个主类,在其主方法main中创建两个人类对象,并分别为各个对象的属性赋初值,然后打印出各个对象的所有基本信息。
(较易)
5.编写学生类和成绩类。
成绩有科目和分数信息。
学生有姓名和成绩信息,学生类的getResult()方法显示输出成绩信息,setData()方法实现初始化学生信息。
(较难)
6.
(1)定义一个动物类Animal,有动物类型属性type和动物发声的方法sound();
(2)定义基于动物类的狗类Dog和猫类Cat,这两个类都要求覆盖父类的发声方法;
(3)定义AnimalDemo类,声明一个Animal对象,分别创建一个Dog、Cat类的对象,然后通过Animal对象来访问Dog、Cat类对象的sound()方法。
(难)
7.
(1)设计一个表示二维平面上圆的类Circle,有表示圆半径的protected类型的成员变量radius、获取和设置radius值的public方法、计算圆面积的public方法。
(2)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量height、获取和设置height值的public方法、计算圆柱体体积的public方法。
(3)建立若干个Cylinder对象,输出其半径、高及其体积的值。
要求:
A、每个类包含无参数和有参数的构造方法。
构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。
B、子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。
(较难)
8.请使用继承关系实现下列描述:
(较难)
自行车和豪车属于车类型
车(car):
车牌号(cid)、车型(dtype)、价值(cvalue)
自行车(bicycle):
车牌号(cid)、车型(dtype)、价值(cvalue)、链条(chain)
豪车(limo):
车牌号(cid)、车型(dtype)、价值(cvalue)、导航(guide)
9.使用一个类里面包含其他类的对象的方法实现下列描述:
(较难)
有1个组长,手下有2个助手,每个助手有2部车。
组长(leader):
姓名(lname)、年龄(lage)
助手(asist):
编号(aid)、年龄(aage)、姓名(aname)、爱好(ahobby)
车(car):
车牌号(cid)、车型(dtype)、价值(cvalue)
10.使用一个类里面包含其他类的对象的方法实现下列描述:
(较难)
有1个人,人有2个宠物且有2部车。
人(people):
姓名(pname)、年龄(page)
宠物(pet):
编号(petid)、年龄(petage)、姓名(petname)
车(car):
车牌号(cid)、车型(dtype)、价值(cvalue)
11.使用一个类里面包含其他类的对象的方法实现下列描述:
(较难)
有1个房间,里面有1个冰箱,冰箱里面有1个饮料
房间有型号和大小2个属性
冰箱有型号、颜色和耗电量3个属性
饮料有类型和价值2个属性
12.定义抽象的Intrument(乐器)类,声明一个抽象的play();定义一个派生类Stringed(弦类乐器),实现父类的抽象的play()。
在main()中实例化Stringed类调用play()。
(难)
13.定义含有抽象方法print()的基类,在构造方法中调用print();print()方法在派生类被重写,该方法打印在派生类中定义的成员变量i,在定义i时给定非零的初始值;
在main()中,创建派生类的对象,然后调用print()。
(难)
14.定义一个接口Myinterface,有两个抽象方法max()和min();在Operation类中实现该接口,同时实现抽象方法max()和min(),它们分别用于求任意三个整数中的最大值和最小值。
(难)
15.定义一个Compute接口,有抽象方法add()、substract()、multiply()和divide();定义一个实现Compute接口的类Computer,然后创建Computer对象完成加、减、乘和除四个方法的调用。
(难)
16.设计一个汽车类Auto,有速度属性speed,另外,有启动state,加速speedup和停止stop方法,然后,设计一个子类Bus表示公共汽车,Bus增加一个属性passenger表示乘客数,另外添加两个方法gotOn和gotOff表示乘客上下车。
(较难)
17.设计一个时间类MyTime,包含一个构造方法,3个私有成员变量hour、minute、second以及它们相应的setter和getter方法,再加上一个转换成“XX时:
XX分:
XX秒”格式字符串的方法toString。
(较易)
18.设计一个日期类MyDate,包含一个构造方法,3个私有成员变量year、month、day以及它们相应的setter和getter方法,再加上一个转换成“XXXX年XX月XX日”格式字符串的方法toString。
(较易)
19.实做一个点类Point,包含两个成员变量x,y分别表示x和y坐标,两个构建器Point()和Point(intx0,inty0),以及一个movePoint(intdx,intdy)方法实现点的位置移动。
编写一个程序,创建两个Point对象p1,p2,分别调用movePoint方法后,打印p1和P2的坐标。
(难)
20.使用ArrayList添加5个数(如:
25、66、88、33、77),求出这5个数的平均数并显示在控制台。
(较易)
21.使用Set添加5个元素(如:
a,b,c,d,e),并将全部元素输出到控制台。
(较易)
22.使用Map添加班上5个学生的学号和姓名,在控制台输出这5个学生的学号和姓名信息。
(较易)
23.创建一个图书类Book,其属性有书号id、书名name、作者author和出版社press;再声明三个Book对象并赋值;然后依次用Set、List、Map集合来实现对Book对象数据的存储,并输出相应图书信息(难)
24.设计一个程序从Thread类派生,用它建立两个线程a和b,a线程每隔0.1秒输出一个字符‘a’,共输出10个‘a’,b线程每隔0.2秒输出一个字符‘b’,也输出10个‘b’。
(难)
25.请计算1~100之间的奇数之和,并实现在屏幕上每2秒钟输出一步计算结果如:
(难)
1+3=4
4+5=9
……
3、类的综合应用(共5道,抽1道,每道20分)
(一)武器问题(较难)
1.定义一个Weapon(武器)抽象类
要求:
1)定义两个属性
(1)武器的名称name
(2)武器的颜色color
2)定义一个抽象方法showMe()
2.定义Pistol(手枪)Sword(军刀)Axe(斧头)三个具体的武器类继承Weapon
1)分别重写showMe方法,该方法功能是在控制台显示该武器的信息
注:
武器的信息就包括它的名称和颜色
3.定义一个入口类Access在main方法里面去测试功能
要求:
1)定义一个List集合
2)建立上面的三种武器对象各3个,给他们取名字,并且指定颜色
3)把这些对象放在定义好的List里面
4)循环这个List取出对象去调用武器类的showMe方法
(二)宠物问题(较难)
1.定义一个Animal(动物)抽象类
要求:
1)定义两个属性
(1)动物的名称name(String类型)
(2)动物的毛色color(String类型)
2)定义一个抽象方法showMe()
2.分别定义CatDogSnake三个宠物类继承Animal
1)分别重写showMe方法,该方法功能是在控制台显示该宠物的信息
注:
宠物的信息就包括它的名称和颜色
3.定义一个入口类Access在main方法里面去测试功能
要求:
1)定义一个List集合
2)建立上面的三种宠物对象各3个,给他们取名字,并且指定毛色
3)把这些对象放在定义好的List里面
4)循环这个List取出对象去调用动物类的showMe方法
(三)家具问题(较难)
1.定义一个Furniture(家具)抽象类
要求:
1)定义两个属性
(1)家具的名称name(String类型)
(2)家具的颜色color(String类型)
2)定义一个抽象方法showMe()
2.定义Sofa(沙发)Desk(桌子)Chair(椅子)三个具体的家具类继承Furniture
1)分别重写showMe方法,该方法功能是在控制台显示该家具的信息
注:
家具的信息就包括它的名称和颜色
3.定义一个入口类Access在main方法里面去测试功能
要求:
1)定义一个List集合
2)建立上面的三种家具对象各3个,给他们取名字,并且指定颜色
3)把这些对象放在定义好的List里面
4)循环这个List取出对象去调用家具类的showMe方法
(四)、箱子问题(难)
1.定义一个Box(箱子)类
要求:
1)定义一个属性
(1)箱子容器(用List集合表示)box
提示:
用来存放物品
2.定义Apple(苹果)类
要求:
1)定义两个属性
(1)苹果的体积bulk(用float数据类型)
(2)苹果的颜色color(用String数据类型)
2)定义一个方法publicvoidshowMe()
该方法功能是在控制台展示苹果的属性
3.在箱子类里面添加几个方法
要求:
1)建立方法可以往箱子里面放一个苹果
publicvoidputApple(Appleapple)
提示:
直接放在List集合里面
2)建立方法可以在箱子里面取出一个苹果
publicApplegetApple()
提示:
取的时候注意判断箱子里面是否还有苹果存在
3)建立方法查看箱子里面还有多少个苹果
publicintgetSize()
4.建立一个Access类在main方法里面创建一个箱子对象和5个苹果对象测试往
箱子里面放苹果取苹果的方法
(五)、子弹发射问题(难)
1.定义一个Pistol(枪)类
要求:
1)定义一个属性,弹夹(用int表示)charger
提示:
用来表示当前子弹数量
2)定义一个方法publicvoidshoot()
该方法的功能是在控制台打印发射两个字,但是需要判断当前弹夹里
面还有子弹没如果没有就打印没有子弹的提示,
注意:
成功发射了之后弹夹会少掉一个子弹
3)定义一个方法用来给弹夹上子弹
publicvoidsetBullet()
注意:
调用此方法一次给弹夹上20发子弹
4)重载上子弹方法提供可以指定上多少数量子弹的功能
publicvoidsetBullet(inti)
注意:
最多能指定30发
publicintgetSize()
4.建立一个Access类在main方法里面创建一个手枪对象测试一下上面4个方法
正确否给手枪上子弹发射子弹
4、JDBC操作数据库(共5道,抽1道,每道20分)
<说明!
>:
此题作为填空题,每道题10个空,每个空2分.黄色部分为填空。
(一)用数据库存放城市信息(难)
1.创建名为test的数据库
2.在数据库test中创建城市(City)表
字段
描述
长度
类型
备注
City_id
城市编号
32
Varchar
Pk(主键)
City_name
城市名称
30
Varchar
City_country
所属国家
30
Varchar
City_note
城市简介
200
Varchar
3.建立一个类来封装城市信息(City),放在com.zdsoft.po包下
提供四个私有属性:
城市编号城市名称所属国家城市简介
4.建立CityDao类,利用DBUtil类建立方法对城市信息进行查询与删除操作
该类放在com.zdsoft.dao包下
1)建立方法通过城市名称查询单个城市
publicCityfindCity(Stringcity_name)
注:
查询出来的城市信息封装在Ctiy对象里
2)能够通过Id删除某条城市信息
publicvoiddeleteCity(Stringcity_id)
5.建立Access类在main函数中测试对城市表的查,删方法
该类放在com.zdsoft.access包下.
packagecom;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDBUtil{
privateConnectionconn=null;//数据库连接对象
privateStatementst=null;//执行sql语句的对象
privateResultSetrs=null;//存放查询结果的对象
/**
*获得ResultSet
*@returnResultSet
*/
publicResultSetgetRs(){
returnrs;
}
/**
*获得数据库连接
*/
privatevoidgetConnection(){
finalStringDRIVERNAME="com.mysql.jdbc.Driver";
finalStringURL="jdbc:
mysql:
//localhost:
3306/test?
characterEncoding=utf-8";
finalStringLOGIN="root";//数据库管理员用户名
finalStringPASSWORD="";//数据库密码
try{
Class.forName(DRIVERNAME);//加载驱动程序
conn=DriverManager.getConnection(URL,LOGIN,PASSWORD);
}catch(Exceptione){
System.out.println("执行getConnection()方法出错:
");
e.printStackTrace();
}
}
publicDBUtil(){
getConnection();
try{
st=conn.createStatement();
}catch(SQLExceptione){
e.printStackTrace();
}
}
/**
*数据库查询
*@paramsql传入的SQL语句
*/
publicvoidexecuteQuery(Stringsql){
try{
rs=st.executeQuery(sql);//执行SQL语句获得结果集
}catch(Exceptione){
System.out.println("执行executeQuery(Stringsql)方法出错:
"+sql);//我们要养成习惯如果发生了错误首先看打印出来的sql语句有没有问题
e.printStackTrace();//打印出错误原因
}
}
/**
*数据库增加/删除/修改
*@paramsql传入的SQL语句
*@return>0执行成功
*/
publicintexecuteUpdate(Stringsql){
intret=-1;
try{
ret=st.executeUpdate(sql);//执行SQL语句对数据表进行操作,变量ret存放对表修改了多少行
}catch(Exceptione){
System.out.println("执行executeUpdate(sql)方法出错:
"+sql);
e.printStackTrace();//打印出错误原因
}finally{
close();
}
returnret;
}
/**
*数据库关闭
*/
publicvoidclose(){
try{
if(rs!
=null){
rs.close();//关闭结果集
}
if(st!
=null){
st.close();//关闭Statement对象
}
if(conn!
=null){
conn.close();//关闭连接
}
}catch(Exceptione){
System.out.println("执行close()方法出错:
");
e.printStackTrace();
}
}
}
packagecom.zdsoft.po;
publicclassCity{
privateStringcityId;
privateStringcityName;
privateStringcityCountry;
privateStringcityNote;
publicStringgetCityId(){
returncityId;
}
publicvoidsetCityId(StringcityId){
this.cityId=cityId;
}
publicStringgetCityName(){
returncityName;
}
publicvoidsetCityName(StringcityName){
this.cityName=cityName;
}
publicStringgetCityCountry(){
returncityCountry;
}
publicvoidsetCityCountry(StringcityCountry){
this.cityCountry=cityCountry;
}
publicStringgetCityNote(){
returncityNote;
}
publicvoidsetCityNote(StringcityNote){
this.cityNote=cityNote;
}
}
packagecom.zdsoft.dao;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
importcom.DBUtil;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 Java 题库