《Java考试复习整理.doc》由会员分享,可在线阅读,更多相关《Java考试复习整理.doc(17页珍藏版)》请在金锄头文库上搜索。
1、一、简答题2、Java程序是由什么组成的?Java 源文件的命名规则是怎样的?答:一个Java 程序是由若干个类组成的。但只能有一个类是public 类。Java源文件命名规则是:源文件名必须与其中的public 类的名字相同,扩展名是java;如果源文件中没有public 类,那么源文件的名字只要和某个类的名字相同,并且扩展名是java就可以了。3、Java语言与Java技术的关系如何?Java语言包括哪两部分? 答:Java语言是Java技术的基础。Java语言包括语法规则和Java类库两部分。4、开发与运行Java程序需要经过哪些主要过程? 答:源程序编辑、字节码编译和解释运行。5、为什
2、么一个Java文件编译后可以获得多个字节码文件?答:这是因为一个源文件中可有多个类,文件经过编译后,每个类就生成一个字节码文件(扩展名为class)。7、面向对象的开发方法与传统的面向过程的开发方法有什么不同?答:传统的面向过程的开发方法是把现实世界的问题转化成计算机逻辑, 而面向对象技术是计算机逻辑来模拟现实世界的问题。8、 什么是对象、类和实体?它们之间的关系如何? 试述下面的说法映射到面向对象的计算机逻辑中分别对应什么概念。(1)计算机92班 (2)计算机92班的同学刘利 (3)大学生 (4)X大学的大学生 (5)班级答:对象是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现; 类
3、是同种对象的集合与抽象。(1)班级类的对象 (2)大学生类的对象 (3)大学生类 (4)大学生类的子类 (5)班级类9、对象有哪些属性?在计算机逻辑中如何描述这些属性?答:对象有状态、行为、标志三个属性; 在计算机逻辑中分别用对象的变量、方法和对象名来描述这三个属性。10、面向对象的开发包括哪些过程?答:面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的开发(OOP)、面向对象的维护。11、面向对象程序设计方法有哪几个最重要的特点?答:抽象、封装、继承、多态。12、什么是父类(超类)?什么是子类?父类、子类间属性有何关系?答:当两个类具有继承关系时,被继承的类称为父类或超类;继承了
4、父类或超类的所有数据和操作的类称为子类。父类是所有子类的公共属性的集合,而每一个子类则是父类的特殊化,是在公共属性的基础上的功能、内涵的扩展和延伸。 13、什么是封装? 答:封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流和交互。14、使用继承有什么好处?什么是单重继承?什么是多重继承?Java采用的是单重继承还是多重继承? 答:使用继承的主要好处是使得程序结构清晰,降低了编码和维护的工作量。只有一个单一父类称为单重继承。一个类可以有一个以上的父类称为多重继承。Java采
5、用的是单重继承。15、什么是多态?实现多态有哪些方式? 答:一个程序中同名的不同方法共存的情况称为多态。实现多态的方式有覆盖和重载。16、什么是覆盖多态?什么是重载多态?覆盖多态和重载多态分别如何区分不同的同名方法? 答:子类对继承自父类的方法的重新定义就称为方法的覆盖,这种多态称为覆盖多态;类对自身已有的同名方法的重新定义称为重载,这种多态称为重载多态。覆盖多态以对象名或类名为前缀来区分不同的同名方法;而重载多态则是使用不同的参数列表来区分不同的同名方法。17、类及类成员的访问控制符有哪些?答:类成员:public,protected,friendly(default),private类:p
6、ublic,final,abstract,protected(不加任何说明的缺省值)18、构造函数特殊在哪里?构造函数什么时候执行?被谁调用?答:构造函数的特殊性在于它既可以从父类那里继承,也可以相互重载。 构造函数在创建新对象时执行,由系统自动调用。21、关键字static可以修饰哪些类的组成部分? 答:可以修饰属性、方法、静态初始化器。22、什么是静态初始化器?静态初始化器与构造函数有什么不同?答:静态初始化器是由关键字static引导的一对大括号括起的语句组,其作用与类的构造函数有些相似, p都是用来完成初始化的工作,但静态初始化器在三点上与构造函数有根本的不同:(1) 构造函数是对每个
7、新创建的对象初始化, 而静态初始化块是对类自身进行初始化,只在类的第一个对象创建之前执行一次。(2)构造函数是在用new运算符产生新对象时由系统自动执行, 而静态初始化块则是在它所属的类加载入内存时由系统调用执行。(3)不同于构造函数,静态初始化块不是方法,没有方法名、返回值和参数列表。23、静态属性有什么特点?类对象可以访问或修改静态属性吗?答:静态属性是类的属性,不专属于某个方法,类对象可以访问或修改静态属性。24、设某程序创建了类MyClassl的两个对象,试写出静态初始化器和构造函数执行的前后次序与次数。 答:先执行类MyClassl的静态初始化器一次,再执行构造函数两次。25、抽象方
8、法有什么特点?抽象方法的方法体在何处定义? 答:抽象方法的特点是用abstract修饰符修饰,只有方法头没有具体的方法体。抽象方法在定义该方法的抽象类的非抽象子类中定义。26、final修饰符可以用来修饰什么?被final修饰符修饰后有何特点?答:final修饰符可用来修饰类、属性、方法和终结器。 被final修饰符修饰的类没有子类。被final修饰符修饰的属性在程序整个执行过程中都不能改变。被final修饰符修饰的方法是功能和内部语句不能更改的最终方法。被final修饰符修饰的终结器(以称析构器finalize()方法,是在对象被删除前进行收尾工作的方法)也是不能更改的。27、哪些修饰符不能
9、组合使用? 答:abstract与final(课本P62,final方法可以被继承但是不能被修改,但被final修饰符修饰的类没有子类),abstract与private,abstract与static,构造函数不能是静态的,因为构造函数是创建对象时自动调用。28、书写语句完成下面的功能。(1)定义一个类,其名称为MyClass,类体为空,它可以被所有的其他类访问。 (2)将对象Objectl的属性fieldl在屏幕上显示出来。答:(1)public class MyClass (2)System.out.print(Object1.field1);29、书写语句完成下面的功能。 ()调用对象
10、Objectl的方法methodl,把返回值赋值给变量Hold。 ()定义一个整型属性Mine,使得只有这个类本身可以访问它。 答:(1) Hold=Object1.method1(); (2) private int Mine;30、书写语句完成下面的功能。(1)为类Classl定义一个整型变量field2,使得所有其他类都可以访问它。(2)定义一个无形式参数无返回值的方法method2,使得使用类名Classl作前缀就可以调用它。答:(1) public class Class1public int field2; (2) static void method2() 类的静态方法31、书写
11、语句完成下面的功能。 (1)为类Class2编写构造函数的方法头,该构造函数不接受形式参数。 (2)为类Class2编写构造函数的方法头,该构造函数接受两个整型形式参数。 答:(1) Class2() (2) Class2(int c1,int c2)32、书写语句完成下面的功能。()创建类Classl的一个对象Objectl,定义这个类的一个引用Refl,把对象Objectl的引用赋给Ref1。(2)为类Classl创建一个静态整型变量s_data。答:(1) Class1 Object1=new Class1();左边创建了一个对象 Class1 Ref1=Object1; 右边创建了一个
12、引用 (2) static int s_data;33、Java中如何定义继承关系?写出定义类库中的类java.awt.Frame的子类MyFrame的类头的语句。答:Java中是通过extends关键字定义继承关系的,其语句的一般格式是: class 子类 extends 父类。 import java.awt.*; class MyFrame extends Frame34、设父类SuperClass中定义了公共整型属性SuperProperty,SuperClass的子类SubClass中定义了公共整型属性SubProperty,则属性SubClass.SuperProperty是否存在
13、?来自何处?答:存在,这个属性是从其父类那里继承来的。35、什么是多重继承?Java是否支持多重继承?Java采取什么机制来替代多重继承? 答:一个子类有多个父类的情况称为多重继承,Java不支持多重继承,Java用实现接口的方法替代多重继承。36、什么是属性(域)的隐藏?答:子类重新定义一个与从父类那里继承来的属性完全相同的属性,称为属性的隐藏。37、一个类里是否可以有同名属性共存的情况?是否最多只能有两个同名的属性。答:子类重新定义父类的同名属性可以实现同名属性共存,若此子类的同名属性又被其子类所隐藏,可以有更多的同名属性共存。38、一个类里有同名属性共存的情况下,如何分别操纵这些同名的属
14、性?答:使用子类定义的方法将操纵子类定义的属性;使用继承自父类的方法将操纵父类定义的属性。39、子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?此时子类中还能找到父类原来的方法吗? 答:这种情况称为方法的覆盖,此时,在子类中已不能找到父类原来的方法,它的内存位置已经被替代。40、同名的不同方法共存的情况称为什么?如何区分这些同名方法?答:这种情况称为方法的重载。不同类的同名方法用类名区分, 同类的同名方法用形式参数数目、顺序和类型区分。41、Java中的多态有哪些方式?答:Java中的多态有两种方式,第一种是子类对父类方法的覆盖,第二种是同类中方法的重载。42、“重载中,两个同
15、名方法只要返回类型或参数列表不同即可互相分辨”这种说法是否正确?为什么?答:不正确,仅仅返回类型不同不能区分同名方法,必须参数列表不同。43、试解释this和super两个关键字,其中this指代的是一个类还是一个具体的对象?答:this表示的是当前对象本身,即this代表了当前对象的一个引用。super表示的是当前对象的父类对象,是当前对象的直接父类对象的引用。this指代的是一个具体对象。44、子类SubClass重新定义并覆盖了父类SuperClass中的方法methodl(),如何使子类能够调用父类原先定义的方法methodl()? 答:super.methodl();45、构造函数可以继承吗?子类继承父类的构造函数应遵循哪些原则? 答:子类可以继承父类的构造函数,构造函数的继承原则有:(1)子类无条件地继承父类的不含参数的构造函数;(2)如果子类自己没有构造函数,则它将继承父类的无参数构造函数作为