JAVA题库及答.pdf
第 1 章 Java语言概述习题一一、简答题1Java 语言的诞生日是哪一天?它有哪些特点与优势?2 Java 语言程序分为哪几种?Java Application程序和 Java Applet程序的主要区别是什么?3Java Application程序在结构上有哪些特点?如何编译、运行?被编译后生成什么文件?该文件机器可以直接识别吗?如何执行?4安装 JDK后如何对JAVA_HOME、PATH和 CLASSPATH 环境变量进行设置?它们的作用是什么?5Java 程序在书写上应注意哪些事项?有哪些编码规范?6为什么要对程序进行注释?Java 中有哪几种注释?文档注释符与多行注释符有何不同?二、选择题1下面关于Java Application 程序结构特点描述中,错误的是(D)。A一个 Java Application程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。BJava 程序中声明有public类时,则 Java 程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。C组成 Java Application程序的多个类中,有且仅有一个主类。D一个.java文件中定义多个类时,允许其中声明多个public类。2编译 Java 程序后生成的面向JVM的字节码文件的扩展名是(B)。A.java B.class C.obj D.exe 3下面关于Java 语言特点的描述中,错误的是(A)。AJava 是纯面向对象编程语言,支持单继承和多继承。BJava 支持分布式的网络应用,可透明地访问网络上的其他对象。CJava 支持多线程编程。DJava 程序与平台无关、可移植性好。4Java SE 的命令文件(java、javac、javadoc 等)所在目录是(C)。A%JAVA_HOME%jre B%JAVA_HOME%lib C%JAVA_HOME%bin D%JAVA_HOME%demo 5下列关于运行字节码文件的命令行参的描述中,正确的是(C)。A命令行的命令字被存放在args0中。B数组 args的大小与命令行的参数的个数无关。C第一个命令行参数(紧跟命令字的参数)被存放在args0中。D第一个命令行参数被存放在args1中。6paint()方法使用哪种类型的参数?(A)AGraphics B Graphics2D CString DColor 7Java 的核心包中,提供编程应用的基本类的包是(B)。Ajava.util Bjava.lang Cjava.applet Djava.rmi 8编译 Java 程序时,用于指定生成class 文件位置的选项是(A)。A-d B-g C-verbose D-nowarn 9下列标识符(名字)命名原则中,正确的是(C)。A类名的首字母小写 B接口名的首字母小写C常量全部大写 D变量名和方法名的首字母大写10下面哪些选项是正确的main 方法说明?(D)Avoid main()Bprivate static void main(String args)Cpublic main(String args)Dpublic static void main(String args)11下面哪种注释方法能够支持javadoc命令?(C)A/B/*.*/C/*.*/D/*.*/三、判断题1Java 语言具有较好的安全性和可移植性及与平台无关等特性。()2Java 语言的源程序不是编译型的,而是编译解释型的。()3Java Application程序中,必有一个主方法main(),该方法有没有参数都可以。()4java.util.Scanner(System.in)可以接收用户从键盘输入的简单数据。()5Java 程序中不区分大小写字母。()6机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。()7System 类中的 println()方法分行显示信息,而print()方法不分行显示信息。()8当前路径的标识是“.”。()9java 命令不区分大小写,而javac 命令区分大小写。()10printf()和 format()方法使用指定格式字符串和参数,将格式化字符串写入到PrintStream类型的输出流(System.out对象)中。()11在运行字节码文件时,使用java命令,一定要给出字节码文件的扩展名.class。()四、编程题1分别用UltraEdit、NetBeans、Eclipse、JBuilder和 JCreator编写一个Java Application程序,使该程序运行后输出字符串“Nothing is too difficult if you put your head into it.”。2编写一个具有交互功能的Java Application程序,提示从键盘输入应付金额和实付金额后,计算并输出找零或欠付金额。3编写一个Java Applet程序,使该程序运行后输出字符串“Don t put off till tomorrow what should be done today.”。第 2 章 Java语言基础习题二一、填空题1已知:int a=8,b=6;则:表达式+a-b+的值为(3)。2已知:boolean b1=true,b2;则:表达式!b1&b2|b2的值为(false)。3已知:double x=8.5,y=5.8;则:表达式x+y-值为(true)。4已知:int a=2,4,6,8;则:表达式(a0+=a1)+a2值为(13)。5执行 int x,a=2,b=3,c=4;x=+a+b+c+;结果是(x=10,a=3,b=4,c=5)。6Java 中的显式类型转换既能(从低类型向高类型转换)也能从高类型向低类型转换,而隐式类型转换只有前者。7在 Java 中,字符串和数组是作为(对象)出现的。8执行下列程序代码的输出结果是(10,11,11)。int a=10;int i,j;i=+a;j=a-;System.out.printf(%d,%d,%d,a,i,j);9执行完 boolean x=false;boolean y=true;boolean z=(x&y)&(!y);int f=z=false?1:2;这段代码后,z 与 f 的值分别是(false)和(1)。二、选择题1下面哪些标识符在Java 语言中是合法的?(AB)Apersons$B TwoUsers C*point Dinstanceof F.end-line 2下列(D)是合法标识符。A2end B-hello C=AB D整型变量3已知 int i=2 147 483 647;+i;则 i 的值等于(A)。A-2 147 483 648 B2 147 483 647 C2 147 483 648 D.-1 4若 x=5,y=8,则表达式x|y 的值为(B)。A3 B13 C0 D5 5若定义有变量float f1,f2=8.0F,则下列说法正确的是(B)。A变量 f1,f2 均被初始化为8.0 B变量 f1 没有被初始化,f2 被初始化为8.0 C变量 f1,f2 均未被初始化 D变量 f2 没有被初始化,f1 被初始化为8.0 6基本数据类型short的取值范围是(B)。A(-256)255 B(-32 768)32 767 C(-128)127 D065 535 7下列(B)是不能通过编译的语句。Adouble d=545.0;Bchar a1=“c”;C int i=321;Dfloat f1=45.0f;8若定义有short s;byte b;char c;则表达式s*b+c的类型为(C)。Achar Bshort Cint Dbyte 9下列循环语句的循环次数是(B)。int i=5;do System.out.println(i-);i-;while(i!=0);A5 B无限 C0 D1 10下列代码哪几行会出错?(C)1)public void modify()2)int I,j,k;3)I=100;4)while(I 0)5)j=I*2;6)System.out.println(The value of j is +j);7)k=k+1;8)I-;9)10 Aline 4 Bline 6 Cline 7 Dline 8 11下列关于数组的定义形式,哪些是错误的?(ABC)Aint c=new char10;B int 3=new int2;Cint a;a=new int;Dchar b;b=new char80;12执行 String s=new String10;语句后,哪些结论是正确的?(BC)As0 为 未定义 Bs.length 为 10 Cs9 为 null Ds10 为 13下列关于Java 语言的数组描述中,错误的是(D)。A数组的长度通常用length表示 B数组下标从0 开始C数组元素是按顺序存放在内存的 D 数组在赋初值和赋值时都不判界14下面的表达式哪些是正确的?(ACE)AString s=你好;int i=3;s+=i;BString s=你好;int i=3;if(i=s)s+=i;CString s=你好;int i=3;s=i+s;DString s=你好;int i=3;s=i+;E.String s=null;int i=(s!=null)&(s.length()0)?s.length():0;15下列代表十六进制整数的是(C)。A012345 B2008 C0 xfa08 Dfb05 16在 switch(expression)语句中,expression的数据型不能是(C)。Achar Bshort Cdouble Dbyte 17下列说法正确的是(AC)。A表达式“1+23”的值是 false B表达式“1+2|3”是非法的表达式C表达式“i+j=1”是非法的表达式D表达式“1+23”的值是 true 18指出正确的表达式(B)。Abyte=128;Blong l=0 xfffL;CBoolean=null;Ddouble=0.9239d;19publicclass T18 staticintarr=new int 10;publicstaticvoid main(String a)System.out.println(arr1);哪个语句是正确的?(C)A编译时将产生错误 B编译时正确,运行时将产生错误C输出零 D输出空20若 String s=hello;String t=hello;char c=h,e,l,l,o;则下列哪些表达式返回true?(AB)As.equals(t);Bt.equals(new String(hello);Ct.equals(c);Ds=t;21执行下面的代码段:switch(m)case 0:System.out.println(case 0);case 1:System.out.println(case 1);break;case 2:default:System.out.println(default);下列 m的哪些值将引起default的输出?(CD)A0 B1 C2 D3 22下列关于“”的运算,哪些是正确的?(AC)A0000 0100 0000 0000 0000 0000 0000 00005 的运行结果是1000 0000 0000 0000 0000 0000 0000 0000 B0000 0100 0000 0000 0000 0000 0000 00005的运行结果是1111 1110 0000 0000 0000 0000 0000 0000 D1100 0000 0000 0000 0000 0000 0000 00005的运行结果是0000 0110 0000 0000 0000 0000 0000 0000 三、判断题1Java 语言使用的是Unicode 字符集,每个字符在内存中占8 位。()2Java 语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。()3所有的变量在使用前都必须进行初始化。()4已知 byte i=(byte)127;i=i+1;这两个语句能被成功编译。()5String str=abcdefghi;char chr=str.charAt(9);()6char chrArray=a,b,c,d,e,f,g;char chr=chrArray6;()7int i,j;boolean booleanValue=(i=j);()8int intArray=0,2,4,6,8;int length=int Array.length();()9String str=abcedf;int length=str.length;()10short shortValue=220;byte byteValue=shortValue;()11int intArray60;()12char str=abcdefgh;()13说明或声明数组时不分配内存大小,创建数组时分配内存大小。()14 强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。()四、分析题1分析下面的程序,写出运行结果。publicclass Exercises5_1 String str=new String(Hi!);char ch=L,i,k,e;publicstaticvoid main(String args)Exercises5_1 ex=new Exercises5_1();ex.change(ex.str,ex.ch);System.out.print(ex.str+);System.out.print(ex.ch);publicvoid change(String str,char ch)str=How are you;ch1=u;运行结果是:(Hi!Luke)2分析下面的程序,写出运行结果。publicclass Exercises5_2 publicstaticvoid main(String args)int n=1,m,j,i;for (i=3;i=30;i+=2)m=(int)Math.sqrt(double)i);for (j=2;j=m+1)System.out.print(i+);if (n%5=0)System.out.print(n);n+;运行结果是:()3 5 7 11 13 17 19 23 29 3分析下面的程序,写出运行结果:publicclass Exercises5_3 publicstaticvoid main(String args)String str1=new String();String str2=new String(String 2);char chars=a,s,t,r,i,n,g;String str3=new String(chars);String str4=new String(chars,2,6);byte bytes=0 x30,0 x31,0 x32,0 x33,0 x34,0 x35,0 x36,0 x37,0 x38,0 x39;String str5=new String(bytes);StringBuffer strb=new StringBuffer(str3);System.out.println(The String str1 is +str1);System.out.println(The String str2 is +str2);System.out.println(The String str3 is +str3);System.out.println(The String str4 is +str4);System.out.println(The String str5 is +str5);System.out.println(The String strb is +strb);运行结果是:()The String str1 is The String str2 is String 2 The String str3 is a string The String str4 is string The String str5 is 0123456789 The String strb is a string 五、改错题1找出下面代码的错误部分,说明错误类型及原因,并更正。publicint m1(int number20)number=new int 20;for(int i=0;inumber.length;i+)numberi=numberi-1+numberi+1;return number;改正后程序:publicint m1(int number)/number=new int20;for (int i=1;i number.length-1;i+)numberi=numberi-1+numberi+1;return number;2找出下面代码的错误部分,说明错误类型及原因,并更正。(1)int x=1;while (x=10);i+;改正后程序:int x=1,i=0;while (x=10)i+;(2)switch(n)case 1:system.out.println(The name is 1);case 2:system.out.println(The name is 2);break;改正后程序:int n=1;switch(n)case 1:System.out.println(The name is 1);break;case 2:System.out.println(The name is 2);break;六、简答题1Java 的关键字有哪些?2标识符有何用途?Java 中定义标识符的规则有哪些?3Java 定义了哪些基本数据类型?基本数据类型和引用数据类型的特点是什么?字节型和字符型数据有何区别?长度为32 位的基本数据类型有哪些?4整型常量有哪三种表示形式?浮点型变量有哪两种表示形式?布尔型常量可以转换成其他数据类型吗?5在 Java 语言中,表示字符串常量和字符常量时应注意哪些问题?6在 Java 转义字符表示中,ASCII 码值对应的字符如何表示?Unicode 字符集中对应的字符如何表示?7什么是表达式语句?什么是空语句?什么是块语句?可以把块语句视为一条语种吗?8if语句中,一定是逻辑型表达式吗?switch语句中,里一定有 break 语句吗?9while循环语句与do-while循环语句有何不同?10for循环语句中,关键字for后面括号内的表达式是否可以使用多个用逗号分隔的表达式?for-each语句的特点是什么?11break 语句和 continue语句有哪两种形式?12创建数组元素为基本数据类型的数组时,系统都会指定默认值吗?布尔型的默认值是什么?13在 Java 中怎样定义和使用一维数组、二维数组?14字符串类String 和 StringBuffer类有何不同?15Java 中的数组实际上是一个隐含的“数组类”的对象,而数组名实际上是该对象的一个引用,这种说法对吗?16字符数组与字符串有本质的不同,而字符串实际上是String类和 StringBuffer类的对象,这种说法对吗?七、编程题1编写一个程序,求1!+2!+,+10!的值。2编程求100 以内的全部素数。3使用异或运算符“”实现两个整数的交换。4编写一个程序,打印输出下列55 螺旋方阵:1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 5给出任意两个日期,编程计算它们相距的天数。6编程输出下列图形:*7编程验证哥德巴赫猜想,即任何大于6 的偶数可以表示为两素数之和,如10=3+7。8百鸡百钱问题,公鸡每只3 元,母鸡每只5 元,小鸡 3 只 1 元,用 100 元钱买 100只鸡,公鸡、母鸡和小鸡各买多少?9编写一个程序,利用数组把10 个数用直接交换方法从小到大排序。10编写一个程序,用选择法对数组a=9,5,3,12,22,35,88,11,90,1进行由小到大的排序。11找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有)。12编写一个程序,打印输出10 行杨辉三角形。13编写一个程序,实现字符串的大小写字母的相互转换。14编写一个程序,找出两个字符串中所有相同的字符。15编写一个程序,对字符串数组按字典序重新排列。16编写一个程序,分析输出字符串中的单词,并统计单词个数。17编写一个程序,将字符串“.ymene tsrow sih si nam yrevE”反转。第 3 章 Java语言面向对象基础习题三一、填空题1类是一组具有相同(属性)和(行为)的对象的抽象。(实例)是由某个特定的类所描述的一个个具体的对象。2(接口)只描述系统所提供的服务,而不包含服务的实现细节。3模型应具有(抽象性)、(可理解性)、(精确性)、(确定性)和廉价性等基本特性。4UML定义了(用例图)、(静态图)、(交互图)、行为图和实现图五类模型图。5在 UML类图中分别用(+)、(#)、()和(-)表示属性与方法的公有、保护、默认和私有访问控制权限。6在 UML中,类之间主要有(关联)、(依赖)、(聚集)、(泛化)和实现五种关系。7构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。8在方法体内定义的变量是(局部变量),其前面不能加(public),且必须(初始化)。9数组元素作实参时对形参变量的数据传递是(单向值传递),数组名作实参时对形参变量的数据传递是(双向引用传递)。10对象作方法形参时,方法实参也用对象,实现(引用)调用。11(new)是一个特殊的方法,用于创建一个类的实例。12对象拷贝有(对象引用复制)、(浅复制)和(深复制)三种。13(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。14(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。15Java 使用固定于首行的(package)语句来创建包。16 在运行时,由 java 解释器自动引入,而不用 import语句引入的包是(java.lang)。17发布 Java 应用程序或类库时,通常可以使用JDK中自带的(JAR)命令打包。二、简答题1名词解释:OO、OOSE、OOA、OOD、OOP;抽象、对象、类、实例、方法、属性、消息、接口、封装、继承、多态性;模型、UML、类图、对象图、用例图、顺序图、协作图、状态图、活动图、包图、构件/组件图、部署图。2简述面向对象的基本思想、主要特征和基本要素。3为什么要对类进行封装?封装的原则是什么?4类的封装性、继承性和多态性各自的内涵是什么?5简述依赖、关联和聚集的区别。6什么是对象?什么是类?二者有何关系?7Java 中类定义的一般格式是什么?定义类的修饰符有哪些?各自的特点是什么?8Java 中成员变量定义的一般格式是什么?成员变量有哪些修饰符?9Java 中成员方法定义的一般格式是什么?成员方法有哪些修饰符?10简述构造方法的特点与作用。11Java 中创建对象的一般格式是什么?如何初始化对象?如何给对象赋值?12什么是类变量(静态变量)?什么是实例变量?它们的存储特性、访问方法、主要区别是什么?13什么是类方法(静态方法)?什么是实例方法?它们的存储特性、访问方法、主要区别是什么?14什么是包?如何创建包?如何引用包?15Import语句和 package 语句的功能分别是什么?16举例说明JAR包的创建、加载与运行方法。三、选择题1下面关于封装性的描述中,错误的是(D)。A封装体包含属性和行为 B被封装的某些信息在外不可见C封装提高了可重用性 D封装体中的属性和行为的访问权限相同2下面关于类方法的描述,错误的是(B)。A说明类方法使用关键字static B类方法和实例方法一样均占用对象的内存空间C类方法能用实例和类名调用 D类方法只能处理类变量或调用类方法3下面关于包的描述中,错误的是(A)。A包是若干对象的集合B使用 package 语句创建包C使用 import语句引入包D包分为有名包和无名包两种4下述哪些说法是正确的?(BC)A用 static关键字声明实例变量B实例变量是类的成员变量C局部变量在方法执行时创建D局部变量在使用之前必须初始化5下面哪些代码段是正确的Java 源程序?(BCD)Aimport java.io.*;Bimport java.io.*;package testpackage;class Person/*do something.*/public class Test/*do something.*/public class Test/*do something.*/Cimport java.io.*;Dpackage testpackage;import java.awt.*;public class Test/*do something.*/public class Test/*do something.*/四、判断题1类是一种类型,也是对象的模板。()2类中说明的方法可以定义在类体外。()3实例方法中不能引用类变量。()4创建对象时系统将调用适当的构造方法给对象初始化。()5使用运算符new创建对象时,赋给对象的值实际上是一个引用值。()6对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。()7对象可作方法参数,对象数组不能作方法参数。()8class是定义类的惟一关键字。()9Java 语言会自动回收内存中的垃圾。()五、分析题分析下面的程序,写出运行结果。import java.awt.*;import java.applet.*;class MemberVar staticintsn=30;finalint fn;finalint fk=40;MemberVar()fn=+sn;publicclass Exercises5_1 extends Applet publicvoid paint(Graphics g)MemberVar obj1=new MemberVar();MemberVar obj2=new MemberVar();g.drawString(obj1.fn=+obj1.fn,20,30);g.drawString(obj1.fk=+obj1.fk,20,50);g.drawString(obj2.fn=+obj2.fn,20,70);g.drawString(obj2.fk=+obj2.fk,20,90);运行结果是:()obj1.fn=31 obj1.fk=40 obj2.fn=32 obj2.fk=40 六、改错题1下面的程序中有若干个语法错误,找出后请改正。public class MyMainClass public static void main()TheOtherClass obj=new TheOtherClass(John Smith,Male,UK);System.out.println(obj.name+obj.gender+obj.nationality);System.out.println(The end of the program!)public class TheOtherClass private String name,gender,nationality;public TheOtherClass(String name,String gender,String nationality)this.name=name;this.gender=gender;this.nationality=nationality;改正后程序:publicclass MyMainClass publicstaticvoid main(String args)TheOtherClass obj=new TheOtherClass(John Smith,Male,UK);System.out.println(obj.name +obj.gender +obj.nationality);System.out.println(The end of the program!);class TheOtherClass public String name,gender,nationality;public TheOtherClass(String name,String gender,String nationality)this.name =name;this.gender =gender;this.nationality=nationality;2下面的程序中有若干个语法错误,找出后请改正。public class Car private String carName;public int mileage;private static final int TOP_SPEED=50;abstract void alert();public static int getTopSpeed()return TOP_SPEED;public static void setCarName()carName=Bensi;public static void setMileage()mileage=180;改正后程序:publicabstractclass Car private String carName;publicintmileage;privatestaticfinalintTOP_SPEED=50;abstractvoid alert();publicstaticint getTopSpeed()returnTOP_SPEED;publicvoid setCarName()carName=Bensi;publicvoid setMileage()mileage =180;七、编程题1设计(用UML的类图表示)并实现一点类Point,该类的构成包括点的x 和 y 两个坐标,其构造方法、设置和修改坐标、求解两点距离的方法等,编写应用程序生成该类的对象并对其进行操作。2设计(用UML的类图表示)并实现一个矩形类Rectangle,包括其构造方法、求解矩形面积和周长的方法等,实例化后输出相应的信息。3计算出 Fibonacci数列的前 n 项,Fibonacci数列的第一项和第二项都是1,从第三项开始,每项的值都是该项的前两项之和。即:F(n)=F(n-1)+F(n-2)n 3 F(1)=F(2)=1 n=1,2 4参照“图3-4”实现Student类的定义,然后生成该类的对象后进行相关操作。第 4 章 Java语言面向对象高级程序设计习题四一、填空题1在面向对象系统中,消息分为(公有消息)和(私有消息)两类。2类的访问控制符有(public)和(默认 default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。3类成员的访问控制符有(public)、(protected)、(private)和默认四种。4public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类与非子类)的代码访问引用。5protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。6default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。7private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。8系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。9若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。10若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。11(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。12Java 的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。13重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。14Java 语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object 类)。15Java 语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。16实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。17接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。18this代表(当前对象自身)的引用,super 表示的是当前对象的直接父类对象。19如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。20Java 不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。21没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。22一个接口可以通过关键字extends 来继承(多个)其他接口。23接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。24一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。25静态内部类可直接通过外部类名引用,其一般格式是(new 外部类名.内部类构造方法();)。26匿名类一般分为(语句匿名类)和(参数匿名)类两种。27面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。二、简答题1什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?2如何创建一个类的子类?3若在一个public 类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?4什么是多态?使用多态有什么优点?Java 中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?5什么是重载方法?什么是覆盖方法?它们的主要区别是什么?6什么是成员变量的继承?什么是成员变量的覆盖?7举例说明什么是上转型对象,上转型对象的操作原则是什么?8简述接口定义的一般格式。9什么是接口?如何定义接口?接口与类有何区别?10 一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?11比较接口与抽象类的异同。12什么是抽象类?什么是抽象方法?各自有什么特点?13什么是最终类?什么是最终变量?什么是最终方法?14简述内部类的类型。15简述在外部类的内部与外部对实例成员类实例化的方法。16简述定义语句匿名类和参数匿名的一般格式。17什么是适配器模式?什么是装饰模式?三、选择题1下面关于类的继承性的描述中,错误的是(C)。A继承是在已有的基础上生成新类的一种方法BJava 语言要求一个子类只有一个父类C父类中成员的访问权限在子类中将被改变D子类继承父类的所有成员,但不包括私有的成员方法2在成员方法的访问控制修饰符中,