1、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)classBimplementsAC)classAimplementsBD)classBextendsA4.下列选项中,用于定义接口的关键字是(A)。A)interfaceB)implementsC)abstrac
2、tD)class5.下列选项中,用于实现接口的关键字是(B)。A)interfaceB)implementsC)abstractD)class6.Java语言的类间的继承的关键字是(B)。A)implementsB)extendsC)classD)public7.以下关于Java语言继承的说法错误的是(A)。A)Java中的类可以有多个直接父类B)抽象类可以有子类C)Java中的接口支持多继承D)最终类不可以作为其它类的父类8.现有两个类M、N,以下描述中表示N继承自M的是(D)。A)classMextendsNB)classNimplementsMC)classMimplementsND)c
3、lassNextendsM9.现有类A和接口,以下描述中表示类实现接口的语句是(A)。A)classimplementsBB)classBimplementsC)classextendsBD)classBextends10.下列选项中,定义抽象类的关键字是(C)。A)interfaceB)implementsC)abstractD)class11.下列选项中,定义最终类的关键字是(D)。A)interfaceB)implementsC)abstractD)final12.下列选项中,哪个是java语言所有类的父类(C)A)StringB)VectorC)ObjectD)KeyEvent13.j
4、ava语言中,用于判断某个对象是否是某个类的实例的运算符是(A)A)instanceofB)+C)isinstanceD)&14.下列选项中,表示数据或方法可以被同一包中的任何类或它的子类访问,即使子类在不同的包中也可以的修饰符是(B)A)publicB)protectedC)privateD)final15.下列选项中,表示数据或方法只能被本类访问的修饰符是(C)A)publicB)protectedC)privateD)final16.下列选项中,接口中方法的默认可见性修饰符是(A)A)publicB)protectedC)privateD)final17.下列选项中,表示终极方法的修饰符
5、是:(B)A)interfaceB)finalC)abstractD)implements18.下列选项中,定义接口MyInterface的语句正确的是:(A)A)interfaceMyInterfaceB)implementsMyInterfaceC)classMyInterfaceD)implementsinterfaceMy19.如果子类中的方法mymethod()覆盖了父类中的方法mymethod(),假设父类方法头部定义如下:voidmymethod(inta),则子类方法的定义不合法的是:(C)A) publicvoidmymethod(inta)B)protectedvoidmy
6、method(inta)C)privatevoidmymethod(inta)D)voidmymethod(inta)二、 填空题1.如果子类中的某个变量的变量名与它的父类中的某个变量完全一样,则称子类中的这个变量_了父类的同名变量。(隐藏)2.属性的隐藏是指子类重新定义从父类继承来的_。(同名变量或属性)3.如果子类中的某个方法的名字、返回值类型和_与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。(参数列表)4.Java仅支持类间的_重继承。(单重)5.抽象方法只有方法头,没有_。(方法体)6.Java语言的接口是特殊的类,其中包含_常量和_方法。(static(静
7、态);abstract(抽象)7.接口中所有属性均为_、_和_的。(public、static、final)8.如果接口中定义了一个方法methodA(),一个属性attA,那么一个类ClassA要实现这个接口的话,就必须实现其中的_方法。(methodA()9.一个类如果实现一个接口,那么它就必须实现接口中定义的所有方法,否则该类就必须定义成_的。(抽象的)10.如果子类中的某个方法的名字、_和参数列表与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。(返回值类型)11.Java仅支持类间的单重继承,接口可以弥补这个缺陷,支持_重继承(多重)12.在方法头用abstr
8、act修饰符进行修饰的方法叫做_方法。(抽象)13.Java语言中用于表示类间继承的关键字是_。(extends)14.接口中所有方法均为_和_的。(public、abstract)15.Java语言中,表示一个类不能再被继承的关键字是_。(final)16.Java语言中,表示一个类A继承自父类B,并实现接口C的语句是_。(classAextendsBimplementsC)。17.如果子类中的方法compute()覆盖了父类中的方法compute(),假设父类的compute()方法头部有可见性修饰符public,则methodS()的可见性修饰符必须是_。(public)三、 程序阅读题
9、1.现有类说明如下,请回答问题:publicclassAStringstr1=Hello!t;Stringstr2=Howareyou?;publicStringtoString()returnstr1+str2;publicclassBextendsAStringstr1=bb,Bill.;publicStringtoString()returnsuper.str1+str1;问题:1)类A和类B是什么关系?(继承关系)2)类A和类B都定义了str1属性和方法toString(),这种现象分别称为什么?(属性的隐藏;方法的覆盖)3)若a是类A的对象,则a.toString()的返回值是什么?
10、(Hello! Howareyou?)4)若b是类B的对象,则b.toString()的返回值是什么?(Hello,Bill.)2.现有一个类定义如下,请回答问题:classEmployeeStringname;intage;doublewage;staticintNo=0;Employee(Stringa1,inta2,doublea3)name=a1;age=a2;wage=a3;No+;在使用该类时,已使用下面语句生成了该类的对象: Employeee1,e2; e1=newEmployee(王劲,26,6300); e2=newEmployee(张山,30,3800);问题:1)e2.
11、name,e2.age,e2.wage的值各是什么?(张山;30;3800.0)2)生成对象e1、e2后,e1.No值为多少?能否通过类名做前缀引用属性No?(2;能)3.阅读程序,回答问题。publicclassInheritTest1publicstaticvoidmain(Stringargs)Aaa;Bbb;aa=newA();bb=newB();aa.show();bb.show();classAinta=1;doubled=2.0;voidshow()A:+ta=+a+td=+d);classBextendsAfloata=3.0f;Stringd=Javaprogram.;int
12、b=4;voidshow()A:+ta=+super.a+td=+super.d);super.show();B:+ta=+a+td=+d+tb=+b);问题:1)这是哪一类java程序?(java应用程序)2)类A和类B是什么关系?(类B是类A的子类)3)按程序输出的格式写出程序运行后的结果.(程序运行结果如下:ClassA:a=1d=2.0ClassA:a=1d=2.0ClassA:a=1d=2.0ClassB:a=3.0d=Javaprogram.b=4)4.现有类说明如下,请回答问题:classAintx=10;intgetA()returnx;classBextendsAintx=1
13、00;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=
14、b2; b1=(B)a1; 问题:该程序的四行输出各是什么?(classAclassAclassBclassB)6.现有类说明如下,请回答问题:publicclassAintx=888;Stringstr=Ilike:;publicStringtoString()returnstr+x;publicclassBextendsAStringx=java;publicStringtoString()returnstr+x+and+super.x;问题:1)类A和类B是什么关系?(类B是类A的子类)2)类A和类B都定义了x属性和方法toString(),这种现象分别称为什么?(属性的隐藏和方法的覆盖
15、)3)若a是类A的对象,则a.toString()的返回值是什么?(Ilike:888)4)若b是类B的对象,则b.toString()的返回值是什么?(Ilike:javaand888)7.运行类C的输出结果是什么?classA publicA() “ThedefaultconstructorofAisinvoked”);classBextendsA publicB() publicclassC publicstaticvoidmain(Stringargs) Bb=newB(); 8.阅读下列程序写出输出结果: classA Strings=classA;voidshow() classB
16、extendsA 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(); 答案:classAclassBclassAclassBclassBclassBclassBclassB四、 程序填空题1.下面是一个类的定义,完成程序填空。(Youwritethis.x=x;)publicclassYouwrite
17、intx;_()x=0;Youwrite(intx)_;2.下面是定义一个接口ITF的程序,完成程序填空。(interfaceabstract)public_ITFpublicstaticfinaldoublePI=Math.PI;public_doublearea(doublea,doubleb);3.下面是定义一个接口A的程序,完成程序填空。(final”;”)publicinterfaceApublicstatic_doublePI=3.14159;publicabstractdoublearea(doublea,doubleb)_五、 编程题简单类的继承:1.定义一个类,描述一个矩形,
18、包含有长、宽两种属性,和计算面积方法。编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性,和计算体积的方法。编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。publicclassTestExtends publicstaticvoidmain(Stringargs) LiFangTif=newLiFangTi(); f.length=2; f.width=3; f.height=7; classJuXing intlength; intwidth; intfindArea() returnlength*width; classLiFan
19、gTiextendsJuXing 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; pu
20、blicStringtoString() Strings=newString(); s=name+t+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+t+age+t+grade; publ
21、icclassTestP publicstaticvoidmain(Stringargs) Studentst1=newStudent(zhangfei,male,23,E); Studentst2=newStudent(liubei,male,25,A);de); st1.print(); st2.print(); 4.定义一个类Rectangle代表矩形,其中包括计算面积的方法。再定义一个它的子类Square代表正方形,其中也包含计算面积的方法。编写一程序,测试新建子类对象的属性和方法。classRectangle floatlength; floatwidth; Rectangle(fl
22、oatlen,floatwh) length=len; width=wh; floatgetArea() returnlength*width; classSquareextendsRectangle floatlength; Square(floatlen) super(len,len); length=len; floatgetArea() returnsuper.getArea(); publicclassTestRectangle publicstaticvoidmain(Stringargs) Squaresq=newSquare(5.2f);is+sq.length+,areais
23、+sq.getArea(); 类与对象习题一、选择题1定义类头时,不可能用到的关键字是(B)。A)classB)privateC)extendsD)public2.下列类定义中,不正确的是(C)。A)classx.B)classxextendsy.C)staticclassximplementsy1,y2.D)publicclassxextendsApplet.3.下列类头定义中,错误的是(A)。A)publicxextendsy.B)publicclassxextendsy.C)classxextendsyimplementsy1.D)classx.4.设A为已定义的类名,下列声明A类的对象
24、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)pu
25、blicXx1=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)vo
26、idA(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=
27、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)public16.下列类头定义中,错误的是(A)。A)publicTestClassextendsy.B)publicclassTestCla
28、ssextendsy.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(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1