文档库

最新最全的文档下载
当前位置:文档库 > 面向对象题目

面向对象题目

1、 面向对象编程的三大特性是( A )
A) 封装,继承,多态 B) 封装,重用,继承
C) 继承,抽象,多态 D) 封装,灵活,抽象

2、 下面关于构造方法的说法正确的是( AB)
A. 构造方法不能被继承 //只能被调用
B. 构造方法不能被重写 //
C. 构造方法不能被重载 //能
D. 构造方法不能声明为private //错

3、 下面关于类的说法,不正确的是( D )
A) 类是同种对象的集合和抽象
B) 类属于Java语言中的引用数据类型
C) 对象是类的实例
D) 类就是对象

4、 封装性可以对类的成员进行访问级别控制,其中限制最严格的是( B)
A) public B) private C) default/默认 D) protected

5、 以下哪种类成员修饰符可以在不同包的子类中访问( D )
A) static B) private C) default D) protected

6、 Java语言中哪个包是被自动导入的( B )
A) java.util B) http://www.wendangku.net/doc/b506f130f01dc281e43af044.htmlng C) java.default D) java.io

7、 有一个类MyClass,它的构造方法声明正确的是( C )
A) void MyClass(int x) {...} B) Myclass(int x){...}
C) public MyClass(int x){…} D) public void MyClass(int x){…}

8、 对下列程序说法正确的是( B )
public class Test7{
public static void main(String[] avgs){
String s1 = "Hello world";
String s2 = "Hello";
s2 = s2 + " world";
System.out.println(s1 == s2);
}
}
A) true B) false C) 编译错误 D) Hello world

9、 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要由子类重写,应该使用
( B )关键字来声明父类的这些方法
A) final B) abstract C) static D) void

10、下面关于接口说法不正确的是( C )
A) 接口的所有方法都是抽象的
B) 接口所有的方法一定都是public的
C) 用于定义接口的关键字是implements
D) 接口是一组行为的集合

11、为了区分类中重载的同名不同方法,要求( A )
A) 参数的类型或个数不同
B) 使用不同的参数名
C) 修改访问权限
D) 方法返回值数据类型不同

12、 如果子类覆盖//(重写)了父类的一个public方法,则此方法在子类中可以使用什么修饰符( A )
A) public
B) public和protected
C) private
D) 任何修饰符都可以,根据需要选用

13、 不能用在类上的修饰符是(D )
A) final B) public C) abstract D) protected

14、 下列程序段运行后,标准输出是( A )
public class TestEx{
public static void main(String args[]){ method(); }
static void method(){
try{
System.out.println("test");
}finally{
System.exit(0);//程序中止
System.out.println("finally");
}
}
}
A) test
B) finally
C) test fianlly
D) 无法通过编译

15、 运行下面的程序时会产生什么异常( C )
public class TestEx{
sta

tic public void main(String args[]){
int x = 0;
int y = 2/x;
int z[] = {1, 2, 3, 4};
int p = z[4];
}
}
A) ArrayIndexOutOfBoundsException
B) NumberFormatException
C) ArithmeticException //算术异常
D) ArithmeticException和ArrayIndexOutOfBoundsException

16、 关于异常,下列描述正确的是( B )
A) try代码段和其后跟随的catch代码段之间可以有间隔代码
B) 每个catch代码段声明其能处理的一种特定类型的异常
C) finally代码段在异常出现的情况下不被执行
D) finally代码段中不可以有try和catch代码段

17、 要将字符串"2008年8月8日20:00:00"解析成Date实例,SimpleDateFormat的格式
模板应该是( D )
A) yyyy-MM-dd hh:mm:ss
B) yyyy-mm-dd HH:MM:SS
C) yyyy年M月d日hh时mm分ss秒
D) yyyy年M月d日hh:mm:ss

18、 关于集合框架,说法不正确的是( C )
A) 与数组不同,集合框架是容量可变的容器
B) 集合框架不能保存基本类型,但是可以将它们转换为包装类后保存
C) 集合框架中的List, Set, Map接口都是Collection接口的子接口 //Map是顶级类,不是接口
D) 集合类除了提供可变容量的存储外,还提供了对数据的算法

19、 对保存在List中的数据进行查找,方法不正确的是( D )
A) 对元素进行遍历,依次比较
B) 对内容有序的List可以进行二分法查找 //BinnarySearch
C) 调用indexOf方法查找
D) 无论是否有序都可以用二分法查找,比线性查找快很多//必须排序

20、 如果要按照特定顺序保存元素,应当使用的容器是( B )
A) HashMap B) ArrayList
C) JFrame、JPanel D) TreeSet
GUI的三大容器:JDialog、JFrame、JWindow(Applet)
21、 有一个名为myList的ArrayList实例,取得其最后一个元素的方法是( D )
A) myList.get(0);
B) myList.get(http://www.wendangku.net/doc/b506f130f01dc281e43af044.htmlst());
C) myList.get(myList.size());
D) myList.get(myList.size()-1);

22、 有一个名为mylist的ArrayList实例,调用mylist.get(0)的结果是
( C )
A) 正确取得其第一个元素
B) 返回数字0
C) 可能产生异常
D) 以上都不正确

23、 当试图编译并运行下面程序时会出现什么结果( C )
class A{
public int getNumber(int a){
return a+1;
}
}
class B extends A{
public int getNumber(int a, char c){
return a+2;
}
public static void main(String[] args){
B b=new B();
System.out.println(b.getNumber(0));
}
}
A) 编译错误
B) 运行错误
C) 1
D) 2

24、 当编译并运行下面程序时会出现什么结果( B )
public class MyAr{
public static void main(String argv[]){
int[] i = new int[5];
System.out.println(i[5]);
}
}
A) 编译出错


B) 运行出错
C) 输出0
D) 输出 ”null”

25、 要将内存中的一首MP3音乐的数据保存到磁盘上,应当使用什么流( C )
A) FileWriter
B) BufferedWriter
C) FileOutputStream
D) ObjectOutputStream

26、 将对象序列化,要实现哪个接口( C )
A) Cloneable B) Runnable
C) Serializable D) Comparator

27、 有以下Java程序代码,运行结果是( D )
public class Test{
public static String output=""; //134
public static void foo(int i){
try {
if(i==1){
throw new Exception();
}
output +="1";
} catch(Exception e){
output+="2";
return;
} finally{
output+="3";
}
output+="4";
}
public static void main(String args[]){
foo(0); foo(1);
System.out.println(output);
}
}
A) 1342 B) 123 C) 134234 D) 13423

28、 在JAVA中,( A )接口位于集合框架的顶层
A) Collection B) Collections C) Map D) Set

29、 已定义两个接口B和C,要定义一个类同时实现这两个接口,正确的是( C )
A) interface A extends B,C
B) interface A implements B,C
C) class A implements B,C
D) class A implements B,implements C

30、 下面关于继承的叙述正确的是( AD )
A. 在JAVA里只允许单一继承//只能有一个父类
B. 在JAVA里一个类只能实现一个接口
C. JAVA可以多继承
D. JAVA的单一继承避免了菱形继承的危险

31、 下面哪些接口直接继承自Collection接口(AC )
A.List B.Map C.Set D.Iterator

32、 研究下面的JAVA代码,输出结果将是( C )
public class TestException {
public static void main(String[] args) {
int a[] = {0,1,2,3,4};
int sum=0;
try{
for(int i=0;i<6;i++)
{
sum+=a[i];
}
System.out.println("sum="+sum);
}catch(http://www.wendangku.net/doc/b506f130f01dc281e43af044.htmlng.ArrayIndexOutOfBoundsException e){
System.out.println("数组下标越界");
}finally{
System.out.println("程序结束");
}
}
}
A. 10 数组下标越界 程序结束
B. 10 程序结束
C. 数组下标越界 程序结束
D. 程序结束

33、 研究下面的JAVA代码,输出结果将是( A )
public class TestException {
public static void main(String[] args) {
try{
System.out.println("hello,jr");
System.exit(0);
}finally{
System.out.println("88");
}
}
}
A. hello,jr
B. 88
C. hello,jr后是88
D. 不能编译

34、 研究下面的JAVA代码,输出结果将是( C )
public class Test {
String s = "nba";
public void test(String s) {
System.out.println("s:"+s);
System.out.println("this.s:"+this.s);
this.s=s;
System.out.println("s:"+s);
System.out.println("this.s:"+this.s);

}

public static void main(String[] args) {
new Test().test("cba");
}
}
A. s:cba this.s:nba s:cba this.s:nba
B. s:nba this.s:nba s:nba this.s:nba
C. s:cba this.s:nba s:cba this.s:cba
D. s:nba this.s:cba s:cba this.s:cba

35、 给定JAVA代码如下,关于super的用法,以下描述正确的是
(C)
class C extends B {
public C(){
super();
}
}
A、用来调用类B中定义的super()方法
B、用来调用类C中定义的super()方法
C、用来调用类B中的无参构造方法
D、用来调用类B中第一个出现的构造方法

36、 对于任意一个类,用户所能定义的构造方法的个数至多为 (E)。
A.0个
B.1个
C.2个
D.3个
E.任意多个

37、关于实例方法和类方法,以下描述正确的是:(D)
A. 实例方法只能访问实例变量 //实例instance==对象object
B. 类方法既可以访问类变量,也可以访问实例变量//static修饰的方法就是类的方法,static修饰的变量就是对象的变量
C. 类方法只能通过类名来调用 //在本类中可以直接写
D. 实例方法只能通过对象来调用

38、接口是Java面向对象的实现机制之一,以下说法正确的是: (B)
A. Java支持多重继承,一个类可以实现多个接口;
B. Java只支持单重继承,一个类可以实现多个接口;
C. Java只支持单重继承,一个类只可以实现一个接口;
D. Java支持多重继承,但一个类只可以实现一个接口。



39、关于接口的定义和实现,以下描述正确的是: (A)
A. 接口定义中的方法都只有定义,没有实现
B. 接口定义中的变量都必须写明final和static //默认是final static修饰的
C. 如果一个接口由多个类来实现,则这些类在实现该接口中的方法时应采用统一的代码
D. 如果一个类实现一个接口,则必须实现该接口中的所有方法,但方法未必声明为public. //抽象类实现接口,无需实现该接口的所有方法

40、在 Java的异常处理语句try-catch-finally 中,以下描述正确的是: (B)
A. try后面是可能产生异常的代码,catch后面是捕获到某种异常对象时进行处 理的代码,finally后面是没有捕获到异常时要执行的代码
B. try后面是可能产生异常的代码,catch后面是捕获到某种异常对象时进行处理的代码,finally后面是无论是否捕获到异常都必须执行的代码
C. catch 语句和finally语句都可以缺省//catch语句和finally语句至少有一个
D. catch 语句用来处理程序运行时的非致命性错误,而finally语句用来处理程序运行时的致命性错误.

41、如果一个程序段中有多个catch,则程序会按如下哪种情况执行?C
A、找到适合的例外类型后继续执行后面的catch.
B、找

到每个符合条件的catch都执行一次。
C、找到适合的例外类型后就不再执行后面的catch。
D、对每个catch都执行一次。

42、下列关于继承的说法哪个是正确的 B
A.子类只继承父类public方法和属性;//protected
B.子类继承父类的非私有属性和方法;
C.子类只继承父类的方法,而不继承父类的属性;//属性和方法吧
D.子类将继承父类的所有的属性和方法。 //不一定的

43、下面哪个是JAVA的保留字? B
A、run
B、import
C、implement
D、string

44、下列关于抽象类的说法哪个是正确的?C
A.某个抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法; //不一定
B.接口和抽象类是同一回事;//接口是特殊的抽象类
C.绝对不能用抽象类去创建对象;//抽象类不能创建对象
D.抽象类中不可以有非抽象方法。//可以

45、下列哪个概念是面向对象和面向过程程序设计所共有的 (B)
A、继承
B、流程控制
C、抽象
D、封装

46、以下关于执行Java小程序的论述错误的是: ( C )
A、可以通过浏览器调用嵌入了Java小程序的HTML文档
//applet
B、可以通过appletviewer.exe调用嵌入了Java小程序的HTML文档
C、可以通过java.exe调用嵌入了Java小程序的HTML文档
D、可以在Java集成开发环境中调用嵌入了Java小程序HTML文档

47、符合对象和类关系的是:D
A、人和老虎 B、书和汽车 C、楼和土地 D、松树和植物

48、关于选择结构下列哪个说法正确?B
A.if语句和 else语句必须成对出现
B.if语句可以没有else语句对应

C.一个if语句只能有一个else if语句与之对应
D.else if结构中必须有default语句

49、while循环和 do while循环的区别是:D
A.没有区别,这两个结构任何情况下效果一样
B.while循环比 do while循环执行效率高
C.do while循环执行次数可能为0 //
D.while循环执行次数可能为0

50、关于 for循环和 while循环的说法哪个正确? ( B)
A.while循环先判断后执行,for循环先执行后判断。
//for先判断后执行
B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果
C.两种循环任何时候都不可以替换
//任何时候都可以替换
D.两种循环结构中都必须有循环体,循环体不能为空 //不一定

51、下列修饰符中与访问控制无关的是 (D )
A.private
B.public
C.protected
D.final

52、方法内的形参: ( B )
A.必须定义多个形参
B.可以没有
C.至少有一个
D.只能是简单变量

53、throws的作用: ( A)
A.表示方法可能会抛出例外//异常//Exception
B.表示后面是方法的

输出量
C.方法的标志,每个方法都必须有
D. 没有意义

54、在Java语言中,整型常量123占用的存储字节数是: ( B )
A.2
B.4
C.6
D.8

55、关于对象成员占用内存的说法哪个正确? ( B )
A.同一个类的对象共用同一段内存

B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间

//this
C.对象的方法不占用内存
D.以上都不对

56、 return语句: ( C )

A.只能让方法返回数值
B.方法都必须含有
C.方法中可以有多句return
D.不能用来返回对象

57、下列说法哪个正确? (C )
A、一个程序可以包含多个源文件
B、一个源文件中只能有一个类
C、一个源文件中可以有多个公共类
D、一个源文件只能供一个程序使用 //复用,jar包


58、关于方法main()的说法哪个正确?( C )
A. 方法main()只能放在公共类中
B. main()的头定义可以根据情况任意更改
C. 一个类中可以没有main()方法
D. 所有对象的创建都必须放在main()方法中

59、构造函数何时被调用? ( A )
A、创建对象时
B、类定义时

C、使用对象的方法时
D、使用对象的属性时

60、抽象方法: ( C )
A、可以有方法体
B、可以出现在非抽象类中
C、是没有方法体的方法

D、抽象类中的方法都是抽象方法


61、关于继承的说法正确的是: ( B )
A、子类将继承父类所有的属性和方法。
B、子类将继承父类的非私有属性和方法。
C、子类只继承父类public方法和属性
D、子类只继承父类的方法,而不继承属性

62、关于构造函数的说法哪个正确? ( C )


A、一个类只能有一个构造函数
B、一个类可以有多个不同名的构造函数
C、构造函数与类同名
D、构造函数必须自己定义,不能使用父类的构造函数

63、关于super的说法正确的是:B
A、是指当前对象的内存地址

B、是指当前对象的父类对象的内存地址
C、是指当前对象的父类
D、可以用在main()方法中


64、覆盖与重载的关系是 ( A )
A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
B.覆盖方法可以不同名,而重载方法必须同名
C.final修饰的方法可以被覆盖,但不能被重载
D.覆盖与重载是同一回事


65、下列关于finally的说法正确的是? ( A )

A.无论程序是否找到合适的例外控制器,都会去执行finally语句
B.finally语句应该放在所有例外控制器的最前面

C.如果程序在前面的例外控制器中匹配到了合适例外,就不再执行finally语句
D.如果程序在前面的例外控制器中匹配到了多个合适的例

外,就不再执行finally语句

66、 对于已经被定义过可能抛出例外的语句,在编程时: ( A)
A、必须使用try/catch语句处理例外,或用throws将其抛出
B.如果程序错误,必须使用 try/catch语句处理例外
C.可以置之不理

D.只能使用try/catch语句处理

67、下列哪个关键字用于实现接口 ( A)
A.implements
B.implement
C. import
D. imports

68、字符流与字节流的区别在于 ( B )
A.前者带有缓冲,后者没有

B.前者是块读写,后者是字节读写
C. 二者没有区别,可以互换使用
D. 每次读写的字节数不同


69、下列流中哪个不属于字符流 ( D )
A.InputStreamReader
B.BufferedReader

C. FilterReader
D. FileInputStream

70、关于Java对象的删除,下列说法正确的是: B
A.必须由程序员完成对象的清除
B.Java把没有引用的对象作为垃圾收集起来并释放
C.只有当程序中调用System.gc()方法时才能进行垃圾收集
D.Java中的对象都很小,一般不进行删除操作


1、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型
2、abstract class和interface的区别
答:声明方法的存在而不去实现它的类叫虚拟类(abstract class).它用于创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract class的实例.但是可以声明一个abstract class变量,将其指向其具体子类的一个实例.不能有抽象构造函数或抽象静态方法.Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法. 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(

即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口.接口是一个更纯的抽象类.
3、接口是否可继承接口 抽象类是否可实现(implements)接口 抽象类是否可继承实体类(concrete class)
接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数
4、 请编写一个接口,内容包含加减乘除四个简单四则运算抽象方法,接着通过Example类加以实现。