第4章 类与对象2.docx
- 文档编号:27658310
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:32
- 大小:24.74KB
第4章 类与对象2.docx
《第4章 类与对象2.docx》由会员分享,可在线阅读,更多相关《第4章 类与对象2.docx(32页珍藏版)》请在冰豆网上搜索。
第4章类与对象2
一、选择题
1定义类头时,不可能用到的关键字是()。
A)classB)privateC)extendsD)public
2.下列类定义中,不正确的是()。
A)classx{....}
B)classxextendsy{....}
C)staticclassximplementsy1,y2{....}
D)publicclassxextendsApplet{....}
3.下列类头定义中,错误的是()。
A)publicxextendsy{...}
B)publicclassxextendsy{...}
C)classxextendsyimplementsy1{...}
D)classx{...}
4.设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。
A)floatAa;B)publicAa=A();
C)Aa=newint();D)staticAa=newA();
5.设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。
A)publicAa=newA();B)publicAa=A();
C)Aa=newclass();D)aA;
6.设X、Y均为已定义的类名,下列声明类X的对象x1的语句中正确的是()。
A)publicXx1=newY();B)Xx1=X();
C)Xx1=newX();D)intXx1;
7.设X、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是()。
A)staticXx1;B)publicXx1=newX(int123);
C)Yx1;D)Xx1=X();
8.通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:
_______________________________。
9.设i,j为类X中定义的int型变量名,下列X类的构造方法中不正确的是()。
A)voidX(intk){i=k;}B)X(intk){i=k;}
C)X(intm,intn){i=m;j=n;}D)X(){i=0;j=0;}
10.有一个类A,以下为其构造方法的声明,其中正确的是()。
A)publicA(intx){...}B)staticA(intx){...}
C)publica(intx){...}D)voidA(intx){...}
11.有一个类A,以下为其构造方法的声明,其中正确的是()。
A)voidA(intx){...}B)A(intx){...}
C)a(intx){...}D)voida(intx){...}
12.设i、j、k为类X中定义的int型变量名,下列类X的构造方法中不正确的是()。
A)X(intm){...}B)voidX(intm){...}
C)X(intm,intn){...}D)X(inth,intm,intn){...}
13.设i,j为类X中定义的double型变量名,下列X类的构造方法中不正确的是()。
A)doubleX(doublek){i=k;returni;}C)X(){i=6;j=8;}
B)X(doublem,doublen){i=m;j=n;}D)X(doublek){i=k;}
二、填空题
1.下面是一个类的定义,请完成程序填空。
publicclass____________
{
intx,y;
Myclass(inti,_______)//构造方法
{
x=i;y=j;
}
}
14.下面是一个类的定义,请将其补充完整。
class_____
{
Stringname;
intage;
Student(_____s,inti)
{
name=s;
age=i;
}
}
2.下面是一个类的定义,请将其补充完整。
class____________//定义名为myclass的类
{
__________intvar=666;
staticintgetvar()
{returnvar;}
}
3.下面程序的功能是通过调用方法max()求给定的三个数的最大值,
请将其补充完整。
publicclassClass1
{
publicstaticvoidmain(Stringargs[])
{
inti1=1234,i2=456,i3=-987;
intMaxValue;
MaxValue=____________;
System.out.println("三个数的最大值:
"+MaxValue);
}
public______intmax(intx,inty,intz)
{inttemp1,max_value;
temp1=x>y?
x:
y;
max_value=temp1>z?
temp1:
z;
returnmax_value;
}
}
4.下面是一个类的定义,请将其补充完整。
___________A
{Strings;
_____inta=666;
A(Strings1){s=s1;}
staticintgeta(){returna;}
}
三、程序阅读题
1.下面是一个类的定义,根据题目要求回答以下问题.
classB
{
privateintx;
privatechary;
publicB(inti,charj)
{
x=i;y=j;
}
publicvoidshow()
{
System.out.println("x="+x+";y="+y);
}
publicvoidmethodC(intx)
{
this.x=this.x+x;
y++;
show();
}
}
(1)定义类B的一个对象b,将类中的变量x初始化为10、变量y初始化为’A’,请写出相应的语句。
(2)若在
(1)问基础上有方法调用语句:
b.show();
则输出如何?
(3)若在
(1)问基础上增加语句:
b.methodC
(1);则输出为何?
2.阅读程序,回答问题。
publicclassTest52
{
staticStringstr1="Hello,Javaworld!
\t";
staticStringstr2="Hello,students!
";
publicstaticvoidmain(Stringargs[])
{System.out.print(str1);System.out.println(str2);}
}
问题:
1)这是哪种形式的java程序?
2)程序的输出是什么?
3.写出下列程序的输出结果
publicclassTest
{
publicstaticvoidmain(String[]args)
{
CountmyCount=newCount();
inttimes=0;
for(inti=0;i<100;i++)
increment(myCount,times);
System.out.println(“countis”+myCount.count);
System.out.println(“timeis”+times);
}
publicstaticvoidincrement(Countc,inttimes)
{
c.count++;
times++;
}
}
classCount
{
publicintcount;
Count(intc)
{
count=c;
}
Count()
{
count=1;
}
}
4.写出下列程序的输出结果:
publicclassTest
{
publicstaticvoidmain(String[]args)
{
Cireclecircle1=newCircle
(1);
Cireclecircle2=newCircle
(2);
//Attempttoswapcircle1withcircle2
System.out.println(“Beforeswap:
circle1=”+circle1.radius
+”circle2=”+circle2.radius);
swap(circle1,circle2);
System.out.println(“Afterswap:
circle1=”+circle1.radius
+”circle2=”+circle2.radius);
}
publicstaticvoidswap(Circlex,Circley)
{
System.out.println(“Beforeswap:
x=”+x.radius
+”y=”+y.radius);
Circletemp=x;
x=y;
y=temp;
System.out.println(“Beforeswap:
x=”+x.radius
+”y=”+y.radius);
}
}
答案:
5.阅读下面程序,回答问题:
publicclassFoo
{
inti;
staticStrings;
voidimethod()
{
}
staticvoidsmethod()
{
}
}
设f是Foo的一个实例,下列语句正确吗?
System.out.println(f.i);
System.out.println(f.s);
f.imethod();
f.smethod();
System.out.println(Foo.i);
System.out.println(Foo.s);
Foo.imethod();
Foo.smethod();
6.下列程序的输出结果是什么?
publicclassFoo
{
staticinti=0;
staticintj=0;
publicstaticvoidmain(String[]args)
{
inti=2;
intk=3;
{
intj=3;
System.out.println(“i+jis”+i+j);
}
k=i+j;
System.out.println(“kis”+k);
System.out.println(“jis”+j);
}
}
答案:
7.根据下面的程序,指出下面每个元素的作用域(类作用域或块作用域)
a)变量x
b)变量y
c)方法cude
d)变量i
e)变量yPos
publicclassCubeTest
{
intx;
publicvoidprint()
{
intyPos=10;
for(x=1;x<=10;x++)
{
System.out.println(cude(x));
for(inti=1;i<=yPos;i++)
System.out.println("");
}
}
publicintcude(inty)
{
returny*y*y;
}
}
答案:
四、简答题
1.面向对象的软件开发方法用什么把数据和基于数据的操作封装在一起?
(
2.在一个类定义中,用什么描述对象的状态?
用什么描述对象的行为?
3.什么方法是一个特殊的方法,用于对对象进行初始化?
4.一个源程序文件中,能有多于一个的public类吗?
5.构造方法的方法名可由编程人员任意命名吗?
6.类的构造方法名必须和类名相同吗?
7.构造函数有返回值吗?
8.构造函数可以重载吗?
9.如果一个类定义中没有定义构造方法,该类有构造函数吗?
10.如果一个类定义中已经定义了构造方法,java还会给它定义缺省的构造方法吗?
11.类的访问控制权有哪两种?
12.用什么修饰符修饰的方法称为静态方法?
用什么修饰符修饰的属性称为静态属性?
13.静态属性和静态方法仅属于类的一个具体对象吗?
它属于谁?
14.static变量能是private变量吗?
15.使用静态成员都能以什么做前缀?
16.static方法中能有this引用吗?
17.非static方法中可以有this引用吗?
18.static方法能处理非static成员吗?
19.非static方法能处理static成员吗?
五、编程题
1、//基本类定义
编写一个类,描述学生的学号、姓名、成绩。
学号用整型,成绩用浮点型,姓名用String类型。
编写一个测试类,测试学生类。
classStudent{
intsNum;
doublescore;
Stringname;
}
publicclassT1_Student{
publicstaticvoidmain(String[]args){
Students=newStudent();
s.sNum=101;
s.score=97;
s.name="张三";
System.out.println(s.name+"的学号是"+s.sNum+"成绩是"+s.score);
}
}
2、//基本类定义
将上述类进行改写,学生拥有判断自己的成绩是否及格的功能。
并能够打印输出自己的姓名和是否及格的信息(方法名:
printInfo())
编写一个测试类,对学生类进行测试。
classStudent{
intsNum;
doublescore;
Stringname;
voidprintInfo(){
if(score>=60){
System.out.println("我的姓名是"+name+"我的成绩为及格");
}
else{
System.out.println("我的姓名是"+name+"我的成绩为不及格");
}
}
}
publicclassT1_Student{
publicstaticvoidmain(String[]args){
Students=newStudent();
s.sNum=101;
s.score=97;
s.name="张三";
System.out.println(s.name+"的学号是"+s.sNum+"成绩是"+s.score);
s.printInfo();
}
}
3.//构造方法:
设计一个关于三角形的类Trival,其中的属性包括三角形的底di,三角形的高gao,方法包括:
默认构造方法、为di和gao指定初值的构造方法、获取三角形面积findArea()。
classTrival
{
doubledi;
doublegao;
Trival()
{
di=1.0;
gao=2.0;
}
Trival(doublei,doublej)
{
di=i;
gao=j;
}
doublefindArea()
{
returndi*gao/2;
}
}
4、//构造方法:
编写一个类,描述桌子,包括以下几种属性:
长、宽、高、颜色。
并且使该类具有这样的功能:
在定制桌子(即创建桌子对象时),就可以同时指定桌子的长宽高来订制。
也可以同时指定长、宽、高、颜色来订制,也可单独指定桌子颜色来订制。
并编写一个测试类测试这几种定制方法。
publicclassT2_Desk{
publicstaticvoidmain(String[]args){
Deskd1=newDesk(2,1.5,0.6);
System.out.println("第一个桌子的长宽高分别为:
"+d1.length+""+d1.width+""+d1.height);
Deskd2=newDesk(1,0.6,0.3,"red");
System.out.println("第二个桌子的长宽高和颜色分别为:
"+d2.length+""+d2.width+""+d2.height+""+d2.color);
Deskd3=newDesk("green");
System.out.println("第三个桌子的颜色是"+d3.color+"色");
}
}
classDesk{
doublelength;
doublewidth;
doubleheight;
Stringcolor;
Desk(doublel,doublew,doubleh){
length=l;
width=w;
height=h;
}
Desk(doublel,doublew,doubleh,Stringc){
length=l;
width=w;
height=h;
color=c;
}
Desk(Stringc){
color=c;
}
}
5、//访问器方法:
编写一个类,描述银行账户,包括收入、支出和账户余额三种属性,同时包括对这三种属性的读、写的访问器方法,这三种属性都定义为私有的。
该类定义的银行账户还能够通过自己的收入和支出自动计算账户余额。
对于账户余额只能读取,自动计算,但不能够直接赋值,也就是不能够写。
编写一个测试类,输入收入和支出项,打印账户余额。
publicclassT4_Bank{
publicstaticvoidmain(String[]args){
Bankb=newBank();
b.setIncome(30);
b.setOutcome(10);
System.out.println(b.getAll());
}
}
classBank{
privatedoubleincome;
privatedoubleoutcome;
privatedoubleall;
publicvoidsetIncome(doublei){
income=i;
}
publicdoublegetIncome(){
returnincome;
}
publicvoidsetOutcome(doubleo){
outcome=o;
}
publicdoublegetOutcome(){
returnoutcome;
}
publicdoublecompute(){
all=income-outcome;
returnall;
}
publicdoublegetAll(){
returncompute();
}
}
6.//访问器方法:
下面是Name类、Person类和Test类,请将Name类和Person类中所有private数据域的访问器方法填写完整。
className
{
privateStringfirstName;//姓
privateStringlastName;//名
Name(Stringf,Stringl)
{
firstName=f;
lastName=l;
}
//填写访问器方法
publicStringtoString()
{
returnfirstName+lastName;
}
}
classPerson
{
privateNamename;//姓名
Person(Namen)
{
name=n;
}
//填写访问器方法
}
classTest
{
publicstaticvoidmain(String[]args)
{
NametheName=newName("张","三");
Personp=newPerson(theName);
System.out.println(p.getName());//输出结果:
张三
}
}
className
{
privateStringfirstName;//姓
privateStringlastName;//名
Name(Stringf,Stringl)
{
firstName=f;
lastName=l;
}
publicStringgetFirstName()
{
returnfirstName;
}
publicvoidsetFirstName(Stringfn)
{
firstName=fn;
}
publicStringgetLastName()
{
returnlastName;
}
publicvoidsetLastName(Stringln)
{
lastName=ln;
}
publicStringtoString()
{
returnfirstName+lastName;
}
}
classPerson
{
privateNamename;//姓名
Person(Namen)
{
name=n;
}
publicNamegetName()
{
returnname;
}
publicvoidsetName(Namen)
{
name=n;
}
}
classTest
{
publicstaticvoidmain(String[]args)
{
Name
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 类与对象2 对象