您好,欢迎来到世旅网。
搜索
您的当前位置:首页JAVA复习题(继承)

JAVA复习题(继承)

来源:世旅网


类的继承习题

一、 选择题

1.Java语言的类间的继承关系是(B)。 A)多重的B)单重的C)线程的D)不能继承

2.以下关于Java语言继承的说法正确的是(C)。

A)Java中的类可以有多个直接父类B)抽象类不能有子类

C)Java中的接口支持多继承D)最终类可以作为其它类的父类 3.现有两个类A、B,以下描述中表示B继承自A的是(D)。 A)classAextendsBB)classBimplementsA C)classAimplementsBD)classBextendsA 4.下列选项中,用于定义接口的关键字是(A)。 A)interfaceB)implementsC)abstractD)class 5.下列选项中,用于实现接口的关键字是(B)。 A)interfaceB)implementsC)abstractD)class 6.Java语言的类间的继承的关键字是(B)。 A)implementsB)extendsC)classD)public 7.以下关于Java语言继承的说法错误的是(A)。 A)Java中的类可以有多个直接父类B)抽象类可以有子类 C)Java中的接口支持多继承D)最终类不可以作为其它类的父类 8.现有两个类M、N,以下描述中表示N继承自M的是(D)。 A)classMextendsNB)classNimplementsM C)classMimplementsND)classNextendsM 9.现有类A和接口B,以下描述中表示类A实现接口B的语句是(A)。 A)classAimplementsBB)classBimplementsA C)classAextendsBD)classBextendsA 10.下列选项中,定义抽象类的关键字是(C)。 A)interfaceB)implementsC)abstractD)class 11.下列选项中,定义最终类的关键字是(D)。 A)interfaceB)implementsC)abstractD)final 12.下列选项中,哪个是java语言所有类的父类(C) A)StringB)VectorC)ObjectD)KeyEvent 13.java语言中,用于判断某个对象是否是某个类的实例的运算符是(A) A)instanceofB)+C)isinstanceD)&& 14.下列选项中,表示数据或方法可以被同一包中的任何类或它的子类访问,即使子类在不同的包中也可以的修饰符是(B)

A)publicB)protectedC)privateD)final

15.下列选项中,表示数据或方法只能被本类访问的修饰符是(C) A)publicB)protectedC)privateD)final

16.下列选项中,接口中方法的默认可见性修饰符是(A) A)publicB)protectedC)privateD)final

17.下列选项中,表示终极方法的修饰符是:(B) A)interfaceB)finalC)abstractD)implements

18.下列选项中,定义接口MyInterface的语句正确的是:(A) A)interfaceMyInterface{}B)implementsMyInterface{}

仅供个人学习参考

C)classMyInterface{}D)implementsinterfaceMy{}

19.如果子类中的方法mymethod()覆盖了父类中的方法mymethod(),假设父类方法头部定义如下:voidmymethod(inta),则子类方法的定义不合法的是:(C) A) publicvoidmymethod(inta)B)protectedvoidmymethod(inta) C)privatevoidmymethod(inta)D)voidmymethod(inta) 二、 填空题

1.如果子类中的某个变量的变量名与它的父类中的某个变量完全一样,则称子类中的这个变量________了父类的同名变量。(隐藏)

2.属性的隐藏是指子类重新定义从父类继承来的__________。(同名变量或属性) 3.如果子类中的某个方法的名字、返回值类型和________与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。(参数列表) 4.Java仅支持类间的____重继承。(单重) 5.抽象方法只有方法头,没有________。(方法体) 6.Java语言的接口是特殊的类,其中包含______常量和_______方法。(static(静态);abstract(抽象))

7.接口中所有属性均为_________、_________和________的。 (public、static、final) 8.如果接口中定义了一个方法methodA(),一个属性attA,那么一个类ClassA要实现这个接口的话,就必须实现其中的_______方法。(methodA()) 9.一个类如果实现一个接口,那么它就必须实现接口中定义的所有方法,否则该类就必须定义成________的。(抽象的) 10.如果子类中的某个方法的名字、__________和参数列表与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。(返回值类型) 11.Java仅支持类间的单重继承,接口可以弥补这个缺陷,支持_____重继承(多重) 12.在方法头用abstract修饰符进行修饰的方法叫做________方法。(抽象) 13.Java语言中用于表示类间继承的关键字是___________。(extends) 14.接口中所有方法均为________和________的。 (public、abstract) 15.Java语言中,表示一个类不能再被继承的关键字是________。(final) 16.Java语言中,表示一个类A继承自父类B,并实现接口C的语句是_________________。 (classAextendsBimplementsC)。 17.如果子类中的方法compute()覆盖了父类中的方法compute(),假设父类的compute()方法头部有可见性修饰符public,则methodS()的可见性修饰符必须是__________。(public) 三、 程序阅读题 1.现有类说明如下,请回答问题: publicclassA {

Stringstr1=\"Hello!\\"; Stringstr2=\"Howareyou?\"; publicStringtoString() {returnstr1+str2;} }

publicclassBextendsA {

Stringstr1=\"\\b\\b,Bill.\"; publicStringtoString() 仅供个人学习参考

{returnsuper.str1+str1;} }

问题:

1)类A和类B是什么关系?(继承关系)

2)类A和类B都定义了str1属性和方法toString(),这种现象分别称为什么?(属性的隐藏;方法的覆盖)

3)若a是类A的对象,则a.toString()的返回值是什么? (Hello! Howareyou?)

4)若b是类B的对象,则b.toString()的返回值是什么?(Hello,Bill.) 2.现有一个类定义如下,请回答问题: classEmployee {

Stringname; intage; doublewage; staticintNo=0; Employee(Stringa1,inta2,doublea3) {

name=a1;age=a2;wage=a3; No++; } }

在使用该类时,已使用下面语句生成了该类的对象: Employeee1,e2; e1=newEmployee(\"王劲\ e2=newEmployee(\"张山\问题:

1)e2.name,e2.age,e2.wage的值各是什么?(张山;30;3800.0) 2)生成对象e1、e2后,e1.No值为多少?能否通过类名做前缀引用属性No?(2;能) 3.阅读程序,回答问题。 publicclassInheritTest1 {

publicstaticvoidmain(String[]args) {

Aaa;Bbb; aa=newA();bb=newB(); aa.show();bb.show(); } }

classA {

inta=1;

doubled=2.0; voidshow()

{A:\"+\"\a=\"+a+\"\d=\"+d);} }

classBextendsA {

仅供个人学习参考

floata=3.0f;

Stringd=\"Javaprogram.\"; intb=4; voidshow() {

A:\"+\"\a=\"+super.a+\"\d=\"+super.d); super.show();

B:\"+\"\a=\"+a+\"\d=\"+d+\"\b=\"+b); } }

问题:1)这是哪一类java程序?(java应用程序) 2)类A和类B是什么关系?(类B是类A的子类)

3)按程序输出的格式写出程序运行后的结果. (程序运行结果如下: ClassA:a=1d=2.0 ClassA:a=1d=2.0 ClassA:a=1d=2.0 ClassB:a=3.0d=Javaprogram.b=4) 4.现有类说明如下,请回答问题: classA {

intx=10;

intgetA(){returnx;} }

classBextendsA {

intx=100; intgetB(){returnx;} }

问题:1)类B是否能继承类A的属性x?(能) 2)若b是类B的对象,则b.getB()的返回值是什么?(100) 3)若b是类B的对象,则b.getA()的返回值是什么?(10) 4)类A和类B都定义了x属性,这种现象称为什么? (属性的隐藏) 5.有如下源程序,请回答问题: classA {Strings=\"classA\";} classBextendsA {Strings=\"classB\";} publicclassTypeConvert { publicstaticvoidmain(Stringargs[]) { Bb1,b2=newB(); Aa1,a2; a1=(A)b2; a2=b2; b1=(B)a1; } } 仅供个人学习参考

问题:该程序的四行输出各是什么? (classA classA classB classB)

6.现有类说明如下,请回答问题: publicclassA {

intx=888;

Stringstr=\"Ilike:\"; publicStringtoString() {returnstr+x;} }

publicclassBextendsA {

Stringx=\"java\"; publicStringtoString() {returnstr+x+\"and\"+super.x;} }

问题:1)类A和类B是什么关系?(类B是类A的子类) 2)类A和类B都定义了x属性和方法toString(),这种现象分别称为什么?(属性的隐藏和方法的覆盖)

3)若a是类A的对象,则a.toString()的返回值是什么?(Ilike:888) 4)若b是类B的对象,则b.toString()的返回值是什么? (Ilike:javaand888) 7.运行类C的输出结果是什么? classA { publicA() {

“ThedefaultconstructorofAisinvoked”); } }

classBextendsA { publicB() { } }

publicclassC { publicstaticvoidmain(String[]args) { Bb=newB(); } }

8.阅读下列程序写出输出结果: classA {Strings=\"classA\"; voidshow() 仅供个人学习参考

{

}

} classBextendsA {Strings=\"classB\"; voidshow() {

} } publicclassTypeConvert { publicstaticvoidmain(Stringargs[]) { Bb1; Bb2=newB(); Aa1,a2; a1=(A)b2; a2=b2; a1.show(); a2.show(); b1=(B)a1; );

b1.show(); b2.show(); } } 答案: classA classB classA classB classB classB classB classB

四、 程序填空题 1.下面是一个类的定义,完成程序填空。(Youwritethis.x=x;) publicclassYouwrite {

intx; _______(){x=0;} Youwrite(intx) {_____;} }

2.下面是定义一个接口ITF的程序,完成程序填空。 (interfaceabstract) public_______ITF {

publicstaticfinaldoublePI=Math.PI;

public______doublearea(doublea,doubleb); 仅供个人学习参考

}

3.下面是定义一个接口A的程序,完成程序填空。(final”;”) publicinterfaceA {

publicstatic_______doublePI=3.14159;

publicabstractdoublearea(doublea,doubleb)_____ }

五、 编程题 简单类的继承:

1.定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。

编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性,和计算体积的方法。 编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。

publicclassTestExtends{ publicstaticvoidmain(String[]args){ LiFangTif=newLiFangTi(); f.length=2; f.width=3; f.height=7; } }

classJuXing{ intlength; intwidth; intfindArea(){ returnlength*width; } }

classLiFangTiextendsJuXing{ intheight; intfindVolume(){ returnfindArea()*height; } }

3.定义一个Person类,它包括的属性有“姓名”和“性别”,为Person类派生出一个子类Student类,为Student子类添加两个属性年龄和成绩等级(用A,B,C,D,E表示),在子类中打印出学生的姓名、性别、年龄及成绩等级。 classPerson{

protectedStringname; protectedStringsex;

Person(Stringname,Stringsex){ this.name=name; this.sex=sex; }

publicStringtoString(){ Strings=newString(); 仅供个人学习参考

s=name+\"\\"+sex; returns; } }

classStudentextendsPerson{ protectedintage; protectedchargrade;

Student(Stringname,Stringsex,intage,chargrade){ super(name,sex); this.age=age; this.grade=grade; }

voidprint(){ Strings=newString(); s=super.toString(); s=s+\"\\"+age+\"\\"+grade; } }

publicclassTestP{ publicstaticvoidmain(String[]args){ Studentst1=newStudent(\"zhangfei\ Studentst2=newStudent(\"liubei\de\");

st1.print(); st2.print(); } }

4.定义一个类Rectangle代表矩形,其中包括计算面积的方法。再定义一个它的子类Square代表正方形],其中也包含计算面积的方法。编写一程序,测试新建子类对象的属性和方法。 classRectangle{ floatlength; floatwidth; Rectangle(floatlen,floatwh){ length=len; width=wh; }

floatgetArea(){

returnlength*width; } }

classSquareextendsRectangle{ floatlength;

Square(floatlen){ super(len,len); length=len; }

仅供个人学习参考

floatgetArea(){

returnsuper.getArea(); } }

publicclassTestRectangle{

publicstaticvoidmain(String[]args){ Squaresq=newSquare(5.2f);

is\"+sq.length+\ } }

类与对象习题 一、选择题 1定义类头时,不可能用到的关键字是(B)。 A)classB)privateC)extendsD)public 2.下列类定义中,不正确的是(C)。 A)classx{....} B)classxextendsy{....} C)staticclassximplementsy1,y2{....} D)publicclassxextendsApplet{....} 3.下列类头定义中,错误的是(A)。 A)publicxextendsy{...} B)publicclassxextendsy{...} C)classxextendsyimplementsy1{...} D)classx{...} 4.设A为已定义的类名,下列声明A类的对象a的语句中正确的是(D)。 A)floatAa;B)publicAa=A(); C)Aa=newint();D)staticAa=newA(); 5.设A为已定义的类名,下列声明A类的对象a的语句中正确的是(A)。 A)publicAa=newA();B)publicAa=A(); C)Aa=newclass();D)aA; 6.设X、Y均为已定义的类名,下列声明类X的对象x1的语句中正确的是(C)。 A)publicXx1=newY();B)Xx1=X(); C)Xx1=newX();D)intXx1; 7.设X、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是(A)。 A)staticXx1;B)publicXx1=newX(int123); C)Yx1;D)Xx1=X(); 8.通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:_______________________________。 (MyClassobj=newMyClass();)

9.设i,j为类X中定义的int型变量名,下列X类的构造方法中不正确的是(A)。 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)。 A)publicA(intx){...}B)staticA(intx){...} C)publica(intx){...}D)voidA(intx){...}

11.有一个类A,以下为其构造方法的声明,其中正确的是(B)。 A)voidA(intx){...}B)A(intx){...} C)a(intx){...}D)voida(intx){...} 仅供个人学习参考

12.设i、j、k为类X中定义的int型变量名,下列类X的构造方法中不正确的是(B)。 A)X(intm){...}B)voidX(intm){...}

C)X(intm,intn){...}D)X(inth,intm,intn){...}

13.设i,j为类X中定义的double型变量名,下列X类的构造方法中不正确的是(A)。 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;}

14.设a,b为类MyClass中定义的int型变量名,下列MyClass类的构造方法中不正确的是(A)。 doubleMyClass(doublek){a=k;returna;} MyClass(){a=6;b=8;}

MyClass(doublem,doublen){a=m;b=n;} MyClass(doublek){a=k;}

15定义类头时,不可能用到的关键字是(A)。 A)protectedB)classC)extendsD)public 16.下列类头定义中,错误的是(A)。 A)publicTestClassextendsy{...} B)publicclassTestClassextendsy{...} C)classTestClassextendsyimplementsy1{...} classTestClass{...} 17.设B为已定义的类名,下列声明B类的对象b的语句中正确的是(D)。 A)floatBb;B)publicBb=B(); C)Bb=newint();D)staticBb=newB(); 18.设ClassA为已定义的类名,下列声明ClassA类的对象ca的语句中正确的是(A)。 A)publicClassAca=newClassA();B)publicClassAca=ClassA(); C)ClassAca=newclass();D)caClassA; 19.设A、B均为已定义的类名,下列声明类A的对象a1的语句中正确的是(C)。 A)publicAa1=newB();B)Aa1=A(); C)Aa1=newA();D)intAa1; 20.设A、B为已定义的类名,下列声明A类的对象a1的语句中正确的是(A)。 A)staticAa1;B)publicAa1=newA(int123); C)Ba1;D)Aa1=A(); 21.通过类A中的不含参数的构造方法,生成该类的一个对象a,可通过以下语句实现:_______________________________。 (Aa=newA();) 22.设m,n为类A中定义的int型变量名,下列A类的构造方法中不正确的是(A)。 A)voidA(intk){m=k;}B)A(intk){m=k;} C)A(intm,intn){m=i;n=j;}D)A(){m=0;n=0;} 23.有一个类Person,以下为其构造方法的声明,其中正确的是(A)。 A)publicPerson(intx){...}B)staticPerson(intx){...} C)publica(intx){...}D)voidPerson(intx){...}

24.有一个类Student,以下为其构造方法的声明,其中正确的是(B)。 A)voidStudent(intx){...}B)Student(intx){...} C)s(intx){...}D)voids(intx){...}

25.设i、j、k为类School中定义的int型变量名,下列类School的构造方法中不正确的是(B)。 A)School(intm){...}B)voidSchool(intm){...}

C)School(intm,intn){...}D)School(inth,intm,intn){...} 二、填空题

1.下面是一个类的定义,请完成程序填空。(Myclassintj) publicclass____________ {

仅供个人学习参考

intx,y;

Myclass(inti,_______)//构造方法 {

x=i;y=j; } }

2.下面是一个类的定义,请将其补充完整。(StudentString) class_____ { Stringname; intage; Student(_____s,inti) { name=s; age=i; } }

3.下面是一个类的定义,请将其补充完整。(myclassstatic) class____________//定义名为myclass的类 {

__________intvar=666; staticintgetvar() {returnvar;} }

4.下面程序的功能是通过调用方法max()求给定的三个数的最大值, 请将其补充完整。(max(i1,i2,i3)static) publicclassClass1 {

publicstaticvoidmain(Stringargs[]) {

inti1=1234,i2=456,i3=-987; intMaxValue; MaxValue=____________; 三个数的最大值:\"+MaxValue); }

public______intmax(intx,inty,intz) {inttemp1,max_value; temp1=x>y?x:y; max_value=temp1>z?temp1:z; returnmax_value; } }

5.下面是一个类的定义,请将其补充完整。(classstatic) ___________A {Strings;

_____inta=666; A(Strings1){s=s1;} staticintgeta(){returna;} }

6.下面是一个类的定义,请完成程序填空。(Roomintn) 仅供个人学习参考

publicclass____________ {

inta,b;

Room(intm,_______)//构造方法 {

a=m;b=n; } }

7.下面是一个类的定义,请将其补充完整。(classString) _____Teacher { Stringname; intage; Teacher(_____s,inti) { name=s; age=i; } }

8.下面是一个类的定义,请将其补充完整。(Deskstatic) class____________//定义名为Desk的类 {

__________intvar=666; staticintgetvar() {returnvar;} }

9.下面程序的功能是通过调用方法max()求给定的二个整数的最大值, 请将其补充完整。(max(a1,a2)int) publicclassClass1 {

publicstaticvoidmain(Stringargs[]) {

inta1=1234,a2=456; intMaxValue; MaxValue=____________; 二个数的最大值:\"+MaxValue); }

publicstatic______max(intx,inty) {intmax_value; max_value=x>y?x:y; returnmax_value; } }

10.下面是一个类的定义,请将其补充完整。(classstatic) ___________Bank {Strings;

_____inta=666;

Bank(Strings1){s=s1;} staticintgeta(){returna;} }

仅供个人学习参考

三、程序阅读题

1.下面是一个类的定义,根据题目要求回答以下问题. classB { privateintx; privatechary; publicB(inti,charj) { x=i;y=j; } publicvoidshow() {

+\";y=\"+y); } publicvoidmethodC(intx) { this.x=this.x+x; y++; show(); } }

(1)定义类B的一个对象b,将类中的变量x初始化为10、变量y初始化为’A’,请写出相应的语句。(Bb=newB(10,’A’);) (2)若在(1)问基础上有方法调用语句: b.show(); 则输出如何?(x=10;y=A) (3)若在(1)问基础上增加语句:b.methodC(1);则输出为何?(x=11;y=B) (x=11;y=B) 2.阅读程序,回答问题。 publicclassTest52 {

Stringstaticstr1=\"Hello,Javaworld!\\"; Stringstaticstr2=\"Hello,students!\"; publicstaticvoidmain(Stringargs[]) {} }

问题:1)这是哪种形式的java程序?(java应用程序) 2)程序的输出是什么? (Hello,Javaworld! Hello,students!) 3.写出下列程序的输出结果 publicclassTest { publicstaticvoidmain(String[]args) { CountmyCount=newCount(); inttimes=0; for(inti=0;i<100;i++) increment(myCount,times); “countis”+myCount.count); “timeis”+times); 仅供个人学习参考

} publicstaticvoidincrement(Countc,inttimes) { c.count++; times++; } }

classCount { publicintcount; Count(intc) { count=c; } Count() { count=1; } }

答案: count101 times0

4.写出下列程序的输出结果: publicclassTest { publicstaticvoidmain(String[]args) { Cireclecircle1=newCircle(1); Cireclecircle2=newCircle(2); //Attempttoswapcircle1withcircle2 “Beforeswap:circle1=”+circle1.radius +”circle2=”+circle2.radius); swap(circle1,circle2); “Afterswap:circle1=”+circle1.radius +”circle2=”+circle2.radius); } publicstaticvoidswap(Circlex,Circley) {

“Beforeswap:x=”+x.radius +”y=”+y.radius); Circletemp=x; x=y; y=temp;

“Beforeswap:x=”+x.radius +”y=”+y.radius); } }

答案:

5.阅读下面程序,回答问题: publicclassFoo {

仅供个人学习参考

inti; staticStrings; voidimethod() { } staticvoidsmethod() { } }

设f是Foo的一个实例,下列语句正确吗? f.imethod(); f.smethod(); Foo.imethod(); Foo.smethod(); 答案: 答案:正确 答案:正确 f.imethod(); 答案:正确 f.smethod(); 答案:正确 答案:错误 答案:正确 Foo.imethod(); 答案:错误 Foo.smethod(); 答案:正确 6.下列程序的输出结果是什么? publicclassFoo { staticinti=0; staticintj=0; publicstaticvoidmain(String[]args) { inti=2; intk=3; { intj=3; “i+jis”+i+j); } k=i+j; “kis”+k); “jis”+j); } }

答案: i+jis23 kis2 jis0

7.根据下面的程序,指出下面每个元素的作用域(类作用域或块作用域) 仅供个人学习参考

变量x 变量y 方法cude 变量i 变量yPos

publicclassCubeTest { intx; publicvoidprint() { intyPos=10; for(x=1;x<=10;x++) { for(inti=1;i<=yPos;i++) \"); } }

publicintcude(inty) { returny*y*y; } }

答案:

变量x:类作用域 变量y:块作用域 方法cude:类作用域 变量I:块作用域 变量yPos:块作用域 四、简答题 1.面向对象的软件开发方法用什么把数据和基于数据的操作封装在一起?(类) 2.在一个类定义中,用什么描述对象的状态?用什么描述对象的行为?(属性;方法) 3.什么方法是一个特殊的方法,用于对对象进行初始化? (构造方法) 4.一个源程序文件中,能有多于一个的public类吗?(不能) 5.构造方法的方法名可由编程人员任意命名吗? (不能,必须与类名同名) 6.类的构造方法名必须和类名相同吗?(必须) 7.构造函数有返回值吗?(没有) 8.构造函数可以重载吗?(可以)

9.如果一个类定义中没有定义构造方法,该类有构造函数吗? (有,编译器会自动生成一个缺省的不带参数的构造函数)

10.如果一个类定义中已经定义了构造方法,java还会给它定义缺省的构造方法吗?(不会) 11.类的访问控制权有哪两种?(public和缺省的(即没有访问控制修饰符))

12.用什么修饰符修饰的方法称为静态方法?用什么修饰符修饰的属性称为静态属性?(static) 13.静态属性和静态方法仅属于类的一个具体对象吗?它属于谁? (不是;它是类的所有对象公有的)

14.static变量能是private变量吗?(可以)

15.使用静态成员都能以什么做前缀?(可以用类名或对象名做前缀) 仅供个人学习参考

16.static方法中能有this引用吗?(不能)

17.非static方法中可以有this引用吗?(可以) 18.static方法能处理非static成员吗?(不能) 19.非static方法能处理static成员吗?(能)

20.类的私有属性和私有方法能不能被其子类直接访问?(不能) 五、编程题

1、基本类定义:

编写一个类,描述学生的学号、姓名、成绩。学号用整型,成绩用浮点型,姓名用String类型。 编写一个测试类,输入学生的学号和成绩,并显示该学号的学生姓名,以及成绩。 classStudent{ intsNum; doublescore; Stringname; }

publicclassT1_Student{ publicstaticvoidmain(String[]args){ Students=newStudent(); s.sNum=101; s.score=97; s.name=\"张三\"; } }

2、基本类定义: 将上述类进行改写,学生拥有判断自己的成绩是否及格的功能。并能够打印输出自己的姓名和是否及格的信息(方法名:printInfo()) 编写一个测试类,对学生类进行测试。 classStudent{ intsNum; doublescore; Stringname; voidprintInfo(){ if(score>=60){ } else{ } } }

publicclassT1_Student{ publicstaticvoidmain(String[]args){ Students=newStudent(); s.sNum=101; s.score=97; s.name=\"张三\"; s.printInfo(); } }

3、设计一个Birthday类,其成员变量有:year,month,day;提供构造方法、输出Birthday对象值的方法和计算年龄的方法。编写程序测试这个类。 import

仅供个人学习参考

publicclassBirthday {

privateintyear; privateintmonth; privateintday;

publicBirthday(intyear,intmonth,intday) {

this.year=year; this.month=month; this.day=day; }

publicvoidprint() {

“您的生日是:”+year+”年”+month+”月”+day+”日”); }

publicvoidage() {

intage=intage=Calendar.getInstance().get(Calendar.YEAR)-year; “您的年龄是:”+age); }

publicstaticvoidmain(String[]args) {

Birthdayb=newBirthday(1980,12,6); b.print(); b.age(); } }

9、设计一个学生类,其中成员变量应包括:学号,姓名,性别,班级,并提供方法打印学生信息,和计算已经创建学生对象的数目。编写一个程序测试这个类。 publicclassStudent {

privatelongid; privateStringname; privatecharsex; privateStringbanji; privatestaticintcount=0; publicStudent(longid,Stringname,charsex,Stringbanji) {

this.id=id; this.name=name; this.sex=sex; this.banji=banji; count++; }

publicvoidprint() {

“该生信息如下:”);

“学号:”+id+”姓名:”+name+”性别:”+sex+”班级:”+banji); }

publicstaticvoidcount() {

仅供个人学习参考

“已经创建的学生个数为:”+count); }

publicstaticvoidmain(String[]args) {

Studenta=newStudent(01,“zhangsan”,’男’,”计专01班”); a.print();

Student.count();

Studentb=newStudent(03,”刘倩”,’女’,”计专03班”); b.print();

Student.count(); } }

12.设计一个关于三角形的类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; } }

Applet小应用程序习题 单项选择题 1.下列不在applet生命周期中的方法是(C)。 A)initB)startC)executeD)stop 2.KeyListener接口中处理键盘事件的处理器不包括(D)。 A)keyPressedBkeyReleasdCkeyTypedDmouseEntered 3.第一次装载或重装applet时,都要调用(A)方法。 A)initB)startC)stopD)destroy 4.鼠标进入组件时调用的方法是(B)。

A)mouseExitB)mouseEnteredC)mouseMovedD)mouseReleased 5.按下按钮移动鼠标时调用(C)鼠标处理器

A)mouseMouedB)mouseReleasedC)mouseDraggedD)mouseClicked 6.下列哪个事件不是所有GUI组件都能产生的事件(A) A)ActionEventB)MouseEventC)KeyEventD)FocusEvent 7.下列哪些事件处理方法不是定义在MouseListener中(D)

A)mouseEnteredB)mousePressedC)mouseClickedD)mouseMoved 仅供个人学习参考

8.下列哪些事件处理方法不是定义在KeyListener中(A) A)keyClickedB)keyPressedC)keyReleasedD)keyPressed 9.在Applet应用程序的生命周期中,以下说法正确的是:(C)

A)当打开浏览器窗口时,系统会自动调用start方法,在Applet应用程序的生命周期中,start方法可执行多次;

B)当激活浏览器窗口时,系统会自动调用start方法,在Applet应用程序的生命周期中,start方法只可执行一次;

C)当打开浏览器窗口时,系统会自动调用init方法,在Applet应用程序的生命周期中,init方法只可执行一次;

D)当激活浏览器窗口时,系统会自动调用init方法,在Applet应用程序的生命周期中,init方法可执行多次。

10.如果重写了Applet的paint方法,在以下何种情况中,会自动调用paint方法绘图。(D) A)当浏览器运行时 B)当Applet内容被覆盖后又重新显示时 C)在执行repaint方法重新绘图时 D)包括以上三种情况 11.在浏览器中执行applet程序,以下选项中的哪个方法将被最后执行(C)。 A)init() B)start() C)destroy() D)stop() 12.在编写JavaApplet程序时,需要在程序的开头写上(B)语句。 A)importjava.awt.*; B)importjava.applet.*; C)importjava.io.*; D)importjava.awt.event.*; 填空题

使用MouseListener接口监听鼠标按下、松开、进入、退出和点击等行为。 使用MouseMotionListener接口监听鼠标的移动和拖动等行为。 默认情况下,JApplet的内容窗格使用BorderLayout布局管理器 4.在applet程序的生命周期中,浏览器通过调用___init__、__start___、___stop___和destroy_方法来控制applet程序。 5.Applet的_____init____方法在开始时只执行一次,____start_________方法在用户每次访问包含Applet的HTML文件时都被调用,_______paint_________方法可以用来在其中画图,_____stop_________方法在用户离开Applet所在的HTML页面时被调用。 6.applet小程序需要继承___Applet/JApplet__________类 7.在显示或者重新显示applet小程序时,会调用___paint__________方法 8.JApplet内容窗格的缺省布局管理器是______BorderLayout_______ 9.在网页中嵌入applet小程序的标记是____<\\applet>_____________ 判断题

TextField和TextArea是用来接受用户输入的组件,但是也可以由程序控制使用户不能在其中输入信息。

用hide()或setVisible(false)方法可以使组件隐藏不可见,但是一旦隐藏便不能恢复显示。

一个Button对象,可以调用方法getLabel()获取其上的标签,从而判断是哪个按钮;Label也使用相同的方法。

所有的鼠标事件都由MouseEvent类的对象表示。

所有的鼠标事件都由实现了MouseListener监听接口的监听者来处理。

使用BorderLayout的容器最多只能放置5个组件,如果要放置更多的组件,则需要使用多层容器。 7.使用GridLayout布局策略的容器中,所有的组件都有相同大小。 8.一般情况下,applet都可以转化成application。

9.在applet生存周期中stop方法总是在destroy方法之后执行。 仅供个人学习参考

答案: 对

错,可以恢复 后半句错 对

错,鼠标移动和拖动事件由实现了MouseMotionListener监听接口的监听者来处理 对 对 对 错

异常处理习题 二、选择题 1.下列异常处理语句编写正确的是:() A)try{;} B)try(

catch(Exceptione) ()

C)try{;} catch(Exceptione) {}

D)try{;} catch{}

三、程序阅读题 1.阅读下面程序回答问题: importjava.io.*; publicclassClass1 { publicstaticvoidmain(Stringargs[]) { inta=5; intb=0; try { } catch(ArithmeticExceptione) { } finally finally被执行!\");} } }

1)运行上述程序,输出结果是什么?(异常提示信息除外) 答案:除提示异常提示信息外,无其他输出

2)将变量b的初值改成5后,输出结果是什么? 答案: 1 a=5 1

a*a=25

仅供个人学习参考

finally被执行!

异常已发生,但不影响程序的执行! 图形化设计 填空题

Java的Swing包中定义框架的类是__.JFrame Java的Swing包中定义面板的类是__JPanel_____ Java的Swing包中定义按钮的类是___JButton___ Java的Swing包中定义文本域的类是__JTextField Java的Swing包中定义标签的类是___JLabel

Java的Swing包中定义组合框的类是__JComboBox Java的Swing包中定义菜单条的类是__JMenuBar Java的Swing包中定义菜单的类是__JMenu Java的Swing包中定义菜单项的类是_JMenuItem Java的Swing包中定义选项卡的类是__JTabbedPane Color类定义在_java.awt___包中。 ActionEvent类定义在_____包中。 ActionEvent事件的监听接口是__ActionListener___,注册方法名是__addActionListener__,事件处理方法名是_____actionPerformed________ WindowEvent事件的监听接口是_____WindowListener______,注册方法名是_____addWindowListener_________ 设置容器布局管理器的方法是___setLayout___ 显示JFrame框架的方法名是________setVisible______ 设置JFrame框架标题的方法名是_______setTitle______ 设置JFrame框架大小的方法名是_______setSize______ 重画面板的方法名是_____repaint_____ 20.AWT的用户界面组件库被更稳定、通用、灵活的库取代,该库称为Swing组件库。 21.不依赖本地GUI的Swing组件称为轻型组件,AWT组件称为重型组件。 22.图形类可以分为三组:容器类、组件类和辅助类。 25.FlowLayout布局方式默认的对齐方式是居中,默认的水平间距和垂直间距都是5个像素。 单项选择题 下面属于容器类的是(A)。 AJframeBJtextFieldCColorDJmenu 2.FlowLayout的布局策略是(A) A)按添加的顺序由左至右将组件排列在容器中。 B)按设定的行数和列数以网格的形式排列组件。 C)将窗口划分成五部分,在这五个区域中添加组件。 D)组件相互叠加排列在容器中。 3.BorderLayout的布局策略是(C)

A)按添加的顺序由左至右将组件排列在容器中。 B)按设定的行数和列数以网格的形式排列组件。

C)将窗口划分成五部分,在这五个区域中添加组件。 D)组件相互叠加排列在容器中。 4.GridLayout的布局策略是(B)

A)按添加的顺序由左至右将组件排列在容器中。 B)按设定的行数和列数以网格的形式排列组件。

C)将窗口划分成五部分,在这五个区域中添加组件。 仅供个人学习参考

D)组件相互叠加排列在容器中。

5.JFrame中内容窗格缺省的布局管理器是(B)

A)FlowLayoutB)BorderLayoutC)GridLayoutD)CardLayout 6.JPanel缺省的布局管理器是(A)

A)FlowLayoutB)BorderLayoutC)GridLayoutD)CardLayout 判断题

AWT事件最初是为AWT组件设计的,但是许多Swing组件都可以触发它们。 FlowLayout是Jframe内容窗格默认的布局管理器。

Java使用事件委托处理模型来处理事件。源对象和监听对象可以是同一个对象。 Graphics类是在不同的平台上显示图形和图像的一个具体类。 答案: 1.(对) 2.(错) 3.(对) 4.(错)

三、编程题: 掌握:(1)面板和面板布局。(2)使用框架及布局 1.创建一个图形化界面,模拟教师中讲台和座位的分布。 讲台放置在教师的最上端,学生座位按行、列分布。指定学生座位按7行5列的布局分布。 如图所示: (考察知识点:定义框架和面板,分别采用布局管理器进行布局,添加按钮组件) 答案: import import import import import import import

publicclassTestextendsJFrame{ publicTest(){ Containerc=this.getContentPane(); c.add(newJButton(\"讲台\"),BorderLayout.NORTH); JPanelp=newJPanel(); p.setLayout(newGridLayout(7,5)); for(inti=0;i<35;i++){ p.add(newJButton(\"座位\"+i)); } this.getContentPane().add(p,BorderLayout.CENTER); } publicstaticvoidmain(String[]args) { TestmyFrame=newTest(); myFrame.setSize(700,700); myFrame.setVisible(true); myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 仅供个人学习参考

2.请编写一个Application,其功能为:在其图形窗口按右对齐方式摆放三个按钮,三个按钮的标题分别显示为:“Button1”,“Button2”,“Button3”。 (考察知识点:FlowLayout布局管理器的使用) mportjava.awt.*; importjavax.swing.*;

classMyFrameextendsJFrame { publicMyFrame() { Containercontainer=this.getContentPane(); container.setLayout(newFlowLayout(FlowLayout.RIGHT)); container.add(newJButton(\"Button1\")); container.add(newJButton(\"Button2\")); container.add(newJButton(\"Button3\")); } publicstaticvoidmain(String[]args) { MyFramemyFrame=newMyFrame(); myFrame.setTitle(\"Show\"); myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myFrame.setSize(200,200); myFrame.setVisible(true); } } 3.请编写一个Application,其功能为:在其框架的内容网格上安排两个按钮,分别命名为East,West,内容网格的布局为BorderLayout布局,并将两个按钮放置在内容网格的东部区域和西部区域。 (考察知识点:BorderLayout布局管理器的使用方法) importjava.awt.*; importjavax.swing.*; classMyFrameextendsJFrame { publicMyFrame() { Containercontainer=this.getContentPane(); container.setLayout(newBorderLayout()); container.add(newButton(\"west\"),BorderLayout.WEST); container.add(newButton(\"east\"),BorderLayout.EAST); } publicstaticvoidmain(String[]args) { MyFramemyFrame=newMyFrame(); myFrame.setTitle(\"Show\"); myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myFrame.setSize(200,200); myFrame.setVisible(true); } }

仅供个人学习参考

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务