面向对象程序设计(java)题库抽题规范:(1)此题库共75道题,抽8道作为期末考试题。其中,易8道,较易33道,较难18道,难16道.(2)按题型,第一大题抽4道,每道10分;第二大题抽2道,每道10分;第三大题抽1道,每道20分;第四大题抽1道,每道20分。(3)按难易程度:易(1道)、较易(4道)、较难(2道)、难(1道)。一、解答题(共40道,抽4道,每道10分,共40分)1.面向对象有哪三大特征?封装,继承,多态.2.什么是类?(易)类是定义同一类所有对象的变量和方法的蓝图或原型。3.什么是对象?对象是类的实例;对象是通过newclassName产生的,用来调用类的方法;类的构造方法.。4.类和对象的区别是什么?java中的类是模板,而对象是依据模版产生的实体5.简述Java的封装性,如何在Java中实现封装封装性是指的把代码封装到大括号中,只能访问自己内部的数据,外边的东西访问不了。实现为加访问权限。6.构造方法有哪些特点方法名与类名相同,没有返回值,可以有多个重载。7.构造方法的作用是什么?(较易)初始化对象,就是你new一个类的时候可以很方便的给你的对象里的属性赋值。8.this在程序中所代表的意思(易)指当前对象9继承的作用是什么?(易)实现代码复用。10.Java支持多继承吗?(易)不能。11.子类可以继承父类的哪些成员?(较难)变量和构造方法。12.简述构造子类对象时子类和父类构造方法执行顺序(较易)先执行父类再执行子类。13.什么是方法的重载,如何选择被重载的方法?(较易)同一个类中如果同时存在两个以上的方法有同一个名字,在这种情况下,我们说方法被重载了,这个过程被称为重载。14什么是方法的重写,如何选择被重写的方法?(较难)当同名方法同时存在于子类和父类中时,对于子类来说就是将继承父亲的方法重载写过了,实现功能完全和父类无关。15.简述重载和覆盖的区别(较易)重载是让同一方法名的方法可以处理和返回不同类型的数据而覆盖是在子类中改写父类的方法16.什么是成员的隐藏?如何访问被隐藏了的父类成员?(较易)在子类对父类的继承中,如果子类的成员变量和父类的成员变量同名,此时称为子类隐藏了父类的成员变量。Super语句。17.简述this和super的区别(较难)this即可以拿到自己的也可以拿到父类的,super只能拿到父类的18.简述面向对象的多态性(较易)一个接口,多个方法19.简述实例变量和类变量的区别(较易)类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。类变量则是用static声明,系统为每个类变量分配一次存储空间。即所有的实例共享一个类变量。1.简述静态方法和实例方法的区别(较易)在外部调用静态方法时,可以使用类名.方法名的方式,也可以使用对象名.方法名的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。2.简述按值传递和按址传递的区别(较难)值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。3.什么是抽象类?抽象类中一定有抽象方法吗?(较难)java中用abstract声明的类就叫做抽象类,抽象类中抽象方法可有可无,但通常都含有抽象方法(这是定义抽象类的目的所在)让子类继承,如果子类没有把抽象类中所有的抽象方法都重写,则这个继承了抽象类的子类也会成为抽象类;如果子类把抽象类中所有的抽象方法都重写,则这个子类就可以实例化了。4.什么是接口?接口中的成员有什么特点?(较易)Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口的特点就是实现类必须实现接口中定义的方法;5.简述抽象类和接口的区别(较易)接口可以多重继承,抽象类只能单继承类实现(implements)某一接口必须实现该接口的所有方法,一个类实现(extends)一个抽象类则可以根据需要有选择的实现需要的方法接口是一种标准。6.extends和implements的区别是什么?(较易)extends是继承另外一个类。也就是说那个类里面的方法不需要再写,直接可以拿来用了。implements是实现接口,也就是说接口里面的方法都需要自己把它补充完整作为一个可用的方法。7.final可以用在哪些地方,分别代表什么意思?(较易)final修饰符可以用来修饰类,类的方法,变量;用final修饰符修饰变量时,一旦该变量获得了初始值之后就不可改变。用final修饰符修饰的类不能被继承,用final修饰符修饰的方法不能被重写。8.static可以用在哪些地方,分别代表什么意思?(较易)用static修饰成员变量,使其成为静态变量,该类的所有实例都将共享此变量;用static修饰方法,使其成为静态方法,类加载之后你便可以直接调用此方法,而不需要一个此类的实例;用static修饰代码块,类加载时会执行这段代码。9.静态代码块的作用是什么?它被执行几次?(较易)static表示静态方法,用来修饰方法,在main方法里,必须有static,否则就会报错,但是必须要,并且不能替换,main方法本身就要求是静态的,这是规定。10.Java中包的作用是什么(易)JAVA中的包,可以理解为命名空间。11.在Java中,import和package的区别?(易)package是运行程序后生成的.class文件全部放在了所定义的包中,便于以后调用管理.import则是在编写程序的时候需要调用某个包中的类.12.public,protected,default,private的区别(较易)public是公用的,其他类都可调用.private是私有的,是最严格的,只有当前类(当前JAVA文件)可以调用,甚至继承当前类的子类都不能调用.protected解决了private的子类不能调用的缺陷,可以理解为一个继承系下的可以调用13.内部类的作用是什么?内部类常用在哪里?(较难)内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有private与protected权限的,但内部类可以;内部类拥有外围类的所有元素的访问权限;可是实现多重继承;可以避免修改接口而实现同一个类中两种同名方法的调用。在这里内部类Inner中关键字this指向内部类Inner的对象,如果要想指向外部类的对象,必须在this指针前加上外部类名称,表示this是指向外部类构造的碎屑。14.简述异常处理机制(较难)在发生异常的地方直接处理;将异常抛给调用者,让调用者处理。15.简述throw和throws的区别(较易)如果程序在运行中发生了不允许的情况比如除0,比如空指针,常见的异常JVM会自动的抛出异常,对于JVM不知道的异常,需要人工抛出和捕获,放发生异常的时候捕获异常会对异常进行处理。16.简述final和finally的区别(较易)final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。17.列出三个常见的异常并说明其作用(较易)空指针错误:使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类型一般不会引起空指针异常。由此可见,空指针异常主要跟与对象的操作相关。格式化数字错误作用是将用户提交的表单域的值转化为整数。字符串越界错误功能是获取字符串中的第4个字符。18.简述String和StringBuffer的区别(较易)String对象是不可变对象,每次操作Sting都会重新建立新的对象来保存新的值.StringBuffer对象实例化后,只对这一个对象操作。字符串连接操作中StringBuffer的效率要明显比String高。19.集合Collection包含哪两大子接口?它们的区别是什么?(较易)Collection接口和List接口区别是:Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。20.如何把一个字节流转换成字符流?(较易)字节流转换成字符流可以用InputSteamReader/OutputStreamWriter相互转换。21.让一个类成为线程有哪两种方式?(较易)第一种方法是将类声明为Thread的子类。该子类应重写Thread类的run方法。第二种方法是声明实现Runnable接口的类。该类然后实现run方法。然后可以分配该类的实例,在创建Thread时作为一个参数来传递并启动。二、单项编程(共25题,抽2题,每题10分,共20分)1.设计一个矩形类,有长和宽两个属性,能够计算每一个矩形的面积和周长;再编写一个主类,在其主方法main中创建一个具体的矩形,求出该矩形的周长和面积。(较易)2.(1)设计一个圆类,有一个属性半径,能够计算每一个圆的面积和周长;再编写一个主类,在其主方法main中创建一个具体的圆形,求出该圆形的周长和面积。(较易)3.设计一个盒子类Box,它有长、宽、高三个私有成员属性,包含无参数和有参数的构造方法,分别实现设置和获取属性的setter和getter方法,以及求盒子体积的公有方法。其中,构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。再编写一个主类BoxTest,在其主方法main()中创建若干个Box对象,输出其长、宽、高及其体积的值。(较易)4.设计一个人类,有姓名、年龄、性别、身高、体重属性,以及吃饭、穿衣服、跑步行为;再编写一个主类,在其主方法main中创建两个人类对象,并分别为各个对象的属性赋初值,然后打印出各个对象的所有基本信息。(较易)5.编写学生类和成绩类。成绩有科目和分数信息。学生有姓名和成绩信息,学生类的getResult()方法显示输出成绩信息,setData()方法实现初始化学生信息。(较难)6.(1)定义一个动物类Animal,有动物类型属性type和动物发声的方法sound();(2)定义基于动物类的狗类Dog和猫类Cat,这两个类都要求覆盖父类的发声方法;(3)定义AnimalDemo类,声明一个Animal对象,分别创建一个Dog、Cat类的对象,然后通过Animal对象来访问Dog、Cat类对象的sound()方法。(难)7.(1)设计一个表示二维平面上圆的类Circle,有表示圆半径的protected类型的成员变量radius、获取和设置radius值的public方法、计算圆面积的public方法。(2)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量height、获取和设置height值的public方法、计算圆柱体体积的public方法。(3)建立若干个Cylinder对象,输出其半径、高及其体积的值。要求:A、每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,