Java面向对象编程练习试题包括答案docx.docx
《Java面向对象编程练习试题包括答案docx.docx》由会员分享,可在线阅读,更多相关《Java面向对象编程练习试题包括答案docx.docx(47页珍藏版)》请在冰豆网上搜索。
Java面向对象编程练习试题包括答案docx
【练习题】01.类的成员变量:
猜数字游戏:
一个类A有一个成员变量v,有一个初值100。
定义一个类,对A类的成员变量v进行猜。
如果大了则提示大了,小了则提示小了。
等于则提示猜测成功。
import.*;
classA{
intv=100;
A(){
=v;
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Aa=newA();
Scannerintput=newScanner;
intintputvalue=();
if(intputvalue>
"你的输入大于这个值");
if(intputvalue<
"你的输入小于这个值");if(intputvalue==
"猜测成功");
}
}
【练习题】02.类的成员变量:
请定义一个交通工具(Vehicle)的类,其中有:
属性:
速度(speed),体积(size)等等
方法:
移动(move()),设置速度(setSpeed(int
speed))
,加速
speedUp(),
减速
speedDown()等等.
最后在测试类Vehicle
它初始化speed,size
对速度进行改变。
中的main()中实例化一个交通工具对象,并通过方法给的值,并且通过打印出来。
另外,调用加速,减速的方法
classVehicle
{intspeed;
intsize;
voidmove(){
};
voidsetSpeed(intspeed){
=speed;
}
voidspeedUp(){
speed=speed+1;
=speed;
}
voidspeedDown(){
speed=speed-1;
=speed;
}
}
publicclassb01
{publicstaticvoidmain(Stringargs[]){
Vehiclea=newVehicle();
(55);
=80;
();
"Speed:
"++"\nsize:
"+;
}
}
【练习题】03.类的成员变量与方法、构造方法
在程序中,经常要对时间进行操作,但是并没有时间类型的数据。
那么,我们可以自己实现一个时间类,来满足程序中的需要。
定义名为MyTime的类,其中应有三个整型成员:
时(hour),分(minute),秒
(second),为了保证数据的安全性,这三个成员变量应声明为私有。
为MyTime类定义构造方法,以方便创建对象时初始化成员变量。
再定义diaplay方法,用于将时间信息打印出来。
为MyTime类添加以下方法:
addSecond(intsec)addMinute(intmin)addHour(inthou)subSecond(intsec)subMinute(intmin)subHour(inthou)
分别对时、分、秒进行加减运算。
classMyTime
{
privateinthour;
privateintminute;
privateintsecond;
publicMyTime(inthour,intminute,intsecond){
=hour;
=minute;
=second;
}
voiddiaplay(){
"时间:
"+hour+":
"+minute+":
"+second
);
}
voidaddSecond(intsec){
second=second+sec;
}
voidaddMinute(intmin){
minute=minute+min;
}
voidaddHour(inthou){
hour=hour+hou;
}
voidsubSecond(intsec){
second=second-sec;
}
voidsubMinute(intmin){
minute=minute-min;
}
voidsubHour(inthou){
hour=hour-hou;
}
voidTest(){
if(hour<=23&hour>=0&minute<=59&minute>=0&second<=59&second>=0)
"\nTrue\n");
else
"\nFalse\n");
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
MyTimeb=newMyTime(11,4,55);
(5);
(5);
(2);
();
();
}
}
【练习题】04.构造方法
编写Java程序,模拟简单的计算器。
定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。
编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量
执行加、减、乘、除的运算。
在main方法中创建Number类的对象,调用各个方法,并显示计算结果。
classNumber
{
privateintn1;privateintn2;
publicNumber(intn1,intn2){
=n1;
=n2;
}
voidaddition(){
intequal=n1+n2;
"n1+n2="+equal);
}
voidsubtration(){
intequal=n1-n2;
"n1-n2="+equal);
}
voidmultiplication(){
intequal=n1*n2;
"n1*n2="+equal);
}
voiddivision(){
intequal=n1/n2;
"n1/n2="+equal);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Numbernum=newNumber(6,3);
();
}
}
【练习题】05.构造方法:
编写Java程序,用于显示人的姓名和年龄。
定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。
定义构造方法,用来初始化数据成员。
再定义显示(display)方法,将姓名和年龄打印出来。
在main方法中创建人类的实例,然后将信息显示。
classPerson
{
privateStringname;privateintage;
publicPerson(Stringname,intage){
=name;
=age;
}
voiddisplay(){
"姓名——>"+name+"\n年龄——>"+age);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Personper=newPerson("奥巴马",20);
();
}
}
【练习题】方法和set方法
定义一个类,该类有一个私有成员变量,通过构造方法将其进行赋初值,并提供该成员的getXXX()和setXXX()方法
提示:
假设有privateStringname;则有
publicvoidsetName(Stringname){
=name;
}
publicStringgetName(){
return;
}
classPerson
{
privateStringname;
publicPerson(Stringn){
(n);
}
publicvoidsetName(Stringn){
name=n;
}
publicStringgetName(){
returnname;
}
publicvoidgetInfo(){
"名字:
"+name);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Personper=newPerson("奥巴马");
();
();
}
}
【练习题】07.构造方法与重载
为“无名的粉”写一个类:
classWuMingFen要求:
1.有三个属性:
面码:
StringtheMa粉的分量(两):
intquantity
是否带汤:
booleanlikeSoup
2.写一个构造方法,以便于简化初始化过程,如:
WuMingFenf1=newWuMingFen("牛肉",3,true);
3.重载构造方法,使得初始化过程可以多样化:
WuMingFenf2=newWuMingFen("牛肉",2);
4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的
WuMingFenf3=newWuMingFen();
5.写一个普通方法:
check(),用于查看粉是否符合要求。
即:
将对象的三个属性打印在控制台上。
classWuMingFen
{
StringtheMa;
intquantitu;
booleanlikeSoup;
publicWuMingFen(){
}
publicWuMingFen(StringtheMa,intquantitu){
=theMa;
=quantitu;
}
publicWuMingFen(StringtheMa,intquantitu,booleanlikeSoup){this(theMa,quantitu);
=likeSoup;
}
publicvoidcheck(){
"面码:
"+theMa+"\n粉的份量:
"+quantitu+"\n是否带汤:
"+likeSoup);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
WuMingFenf1=newWuMingFen("牛肉",3,true);
WuMingFenf2=newWuMingFen("牛肉",2);
WuMingFenf3=newWuMingFen();
();
();
();
}
}
【练习题】08.构造方法的重载:
定义一个名为Vehicles(交通工具)的基类,该类中应包含String类型的成员属性brand(商标)和color(颜色),还应包含成员方法run(行驶,在控制台显示“我已经开动了”)和showInfo(显示信息,在控制台显示商标和颜色),并编写构造方法初始化其成员属性。
编写Car(小汽车)类继承于Vehicles类,增加int型成员属性seats(座位),还应增加成员方法showCar(在控制台显示小汽车的信息),并编写构造方法。
编写Truck(卡车)类继承于Vehicles类,增加float型成员属性load(载重),还应增加成员方法showTruck(在控制台显示卡车的信息),并编写构造方法。
在main方法中测试以上各类。
classVehicles
{
privateStringbrand;privateStringcolor;
publicVehicles(Stringbrand,Stringcolor){
=brand;
=color;
}
voidrun(){
"我已经开动了
");
}
voidshowInfo(){
"商标:
"+brand+"\n
颜色:
"+color);
}
}
classCarextendsVehicles
{
privateintseats;
publicCar(Stringbrand,Stringcolor,intseats){
super(brand,color);
=seats;
}
voidshowCar(){();
"座位:
"+seats);
}
}
classTruckextendsVehicles{
privatefloatload;
publicTruck(Stringbrand,Stringcolor,floatload){
super(brand,color);
=load;
}
voidshowTruck(){
();
"载重:
"+load);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Vehiclesf1=newVehicles("宝马","白色");
Carf2=newCar("法拉利","黑色",4);
Truckf3=newTruck("解放","绿色",5000);
();
();
();
();
();
();
}
}
【练习题】09.构造方法与重载
定义一个网络用户类,要处理的信息有用户ID、用户密码、email
类的实例时,把以上三个信息都作为构造函数的参数输入,其中用户
密码时必须的,缺省的email地址是用户ID加上字符串"@"
地址。
在建立
ID和用户
classNetUser
{
privateStringID;
privateStringkey;
privateStringemailDress;
publicNetUser(StringID,Stringkey){
=ID;
=key;
=ID+"@";
}
voidoutput(){
"ID:
"+ID+"\n
用户密码"+key+"\n
用户地址"+emailDress);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
NetUseruser=newNetUser("5566","yan");
();
}
}
【练习题】10.构造方法与重载、包
编写Addition类,该类中应包含一组实现两数相加运算的重载方法。
实现加法运算的方法,应接受两个参数(即加数和被加数),方法将两个参数进行加法运算后,返回相加结果。
考虑可能针对不同的数据类型进行计算,重载一组方法,包括整型、长整型、浮点型、双精度浮点型、还有字符串。
在main方法中创建Addition类的实例,分别调用重载方法测试其效果。
应将Addition类打入到包中,以自己名字的拼音为包命名。
package;
classAddition{
publicAddition(){
}
voidadd(inta,intb){
intc=a+b;
"a+b="+c);
}
voidadd(longa,longb){
longc=a+b;
"a+b="+c);
}
voidadd(floata,floatb){
floatc=a+b;
"a+b="+c);
}
voidadd(doublea,doubleb){
doublec=a+b;
"a+b="+c);
}
voidadd(Stringa,Stringb){
Stringc=a+b;
"a+b="+c);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Additionm=newAddition();
Additionn=newAddition();
(5,6);
("hello","world");
}
}
【练习题】11.构造方法与重载
将上次练习题三中编写的MyTime类打到以自己名字的拼音命名的包中,并为该类重载一组构造方法,以方便使用者能够以多种形式初始化该类的实例。
package;
classMyTime
{
privateinthour;
privateintminute;
privateintsecond;
publicMyTime(inthour,intminute,intsecond){
=hour;
=minute;
=second;
}
publicMyTime(intminute,intsecond){
=minute;
=second;
}
voiddiaplay(){
"时间:
"+hour+":
"+minute+":
"+second
);
}
voidaddSecond(intsec){
second=second+sec;
}
voidaddMinute(intmin){
minute=minute+min;
}
voidaddHour(inthou){
hour=hour+hou;
}
voidsubSecond(intsec){
second=second-sec;
}
voidsubMinute(intmin){
minute=minute-min;
}
voidsubHour(inthou){
hour=hour-hou;
}
voidTest(){
if(hour<=23&hour>=0&minute<=59&minute>=0&second<=59&second>=0)
"\nTrue\n");
else
"\nFalse\n");
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
MyTimeb=newMyTime(11,4,55);
(5);
(5);
(2);
();
();
}
}
【练习题】12.构造方法与重载
建立一个汽车类,包括轮胎个数,汽车颜色,车身重量等属性。
并通过不同的构造方法创建事例。
至少要求:
汽车能够加速,减速,停车。
要求:
命名规范,代码体现层次,有友好的操作提示。
classCar
{
privateinttires;
privateStringcolor;
privateintload;
publicCar(inttires){
=tires;
"轮胎个数:
"+tires);
}
publicCar(Stringcolor){
=color;
"汽车颜色:
"+color);
}
publicCar(inttires,Stringcolor,intload){
this(tires);
=color;
"汽车颜色:
"+color);
=load;
"汽车重量:
"+load);
}
voidupSpeed(){
"车正在加速");
}
voiddownSpeed(){
"车正在减速");
}
voidstop(){
"车已经停止了");
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Cara=newCar(6);
Carb=newCar(4,"白色",4000);
();
();
}
}
【练习题】13.构造方法与重载
创建一个类,为该类定义三个构造函数,分别执行下列操作:
1、传递两个整数值并找出其中较大的一个值
2、传递三个double值并求出其乘积
3、传递两个字符串值并检查其是否相同
4、在main方法中测试构造函数的调用classCheck
{
publicCheck(inta,intb){intc=(a,b);
"较大值为:
"+c);
}
publicCheck(doublea,doubleb,doublec){
doubled=a*b*c;
"a*b*c="+d);
}
publicCheck(Stringa,Stringb){
booleanc=(b);
"两字符串相等:
"+c);
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
Checkm=newCheck(4,8);
Checkn=newCheck,,;
Checkp=newCheck("ac","ab");
}
}
【练习题】关键字与普通变量的区别:
创建一个名称为StaticDemo的类,并声明一个静态变量和一个普通变量。
对变量分别赋予10和5的初始值。
在main()方法中输出变量值。
classStaticDemo
{
privatestaticinta=10;
privateintb=5;
publicStringgetInfo(){
return"a="+a+"\nb="+b;
}
}
publicclassb01
{
publicstaticvoidmain(Stringargs[]){
StaticDemom=newStaticDemo();
}
}
【练习题】15.继承:
创建一个名称为MainPackage的包,使它包含MainClass和MainSubClass类。
MainClass类应当包含变量声明,其值从构造函数中输出。
MainSubClass类从MainClass派生而来。
试执行下列操作:
创建一个名称为SamePackage的类,使它导入上述包,并创建一个MainSubClass类的对象。
packageMainPackage;
classMainClass
{
Stringstr;
publicMainClass(Stringstr){
=str;
}
}
classMainSubClass