面向对象测试题(含答案和解析)

1.int[] my_Array;

my_Array=new int[5];

for(int count=0;count<=5;count++)数组下标越界

System.out.println(my_Array[count]);

以上Java代码运行的结果是(D  d )。

A.将1,2,3,4,5输出到屏幕

B.将0,1,2,3,4输出到屏幕

C.将0,1,2,3,4,5输出到屏幕

D.将出现运行时异常

2.在Java中,关键字( a )使类不能派生出子类

A.final

B.public

C.private   不能修饰类

D.volatile

E.native

解析:不能派生出子类的意思就是不能被继承

能够修饰类的只有public和默认的  abstract  final

3.在Java中,欲定义某类所在的包外的所有类都能访问这个类,则应用的关键字是()

A.protected

B.private

C.public

解析:所有的类都能访问

4.在JAVA语言中,包pack1的类class1 中有成员方法:

protected void method_1(){…},

private void method_2(){…},

public void method_3(){….}

void method_4(){…},

包pack2中的类class2 不是class1的子类,你在class2 中可以调用的方法有()

A.method_1

B.method_2

C.method_3

D.method_4

5.在JAVA中,类Worker是类Person的子类,Worker的构造方法中有一句“super()“,该语句()

A.调用类Worker中定义的super()方法

B.调用类Person中定义的super()方法

C.调用类Person的构造函数

D.语法错误

6.在JAVA语言中,下面关于类的描述正确的是()

A.一个子类可以有多个超类  单继承

B.一个超类可以有多个子类

C.子类可以使用超类的所有   static、final

D.子类一定比超类有更多的成员方法   抽象类?

7.JAVA是一种完全面向()的语言。

A.过程

B.对象

C.组件

D.服务

8.JAVA中,实现继承的关键字是()

A.public

B.class

C.extends

D.implements

9.在JAVA语言中,不能被修改的变量是用关键字()来修饰的。

A.final

B.class

C.system

D.void

10.JAVA中,访问修饰符限制性最高的是()。

A.private

B.protected

C.public

D.friendly

11. 试图编译运行下面的代码会输出什么样的结果

int i=1;

 switch (i) {

 case 0:

 System.out.println("zero");

 break;

 case 1:

 System.out.println("one");

 case 2:

 System.out.println("two");

 default:

 System.out.println("default");

 }

A. one

B. one, default

C. one, two, default    break

D.default

12. 关于 class,以下说法正确的是:

A.  class是关键字,实质上是系统类的名字;

B.  与接口和数组相比,class 这一大类主要用于用户构造满足自己需要的对象类型;

C.  class是对象的数据类型,描述的是一类对象的共同拥有的属性、行为等特征;

D.  当 class 作为内部成员时,可以用 private 或 protected 等来修饰;

13.下面关于 String 类的说法中,正确的是。

A.String 对象以"\n"结束       B. String 隶属于 class 这一大类

C.  String 对象和字符数组对象是一回事   

D. ""(即空字符串)就是 null

14.以下标识符中是 Java 关键字。

A.String      B.static      C. System     D. β

15.关于构造函数,下列说法正确的说法是。

A. 构造函数可以设为 private 权限      

B. 子类不能重写超类的构造函数

C. 构造函数用于初始化对象

D. 在构造函数中不能调用构造函数,否则就会无穷构造下去

16. 关于 super this,下列说法正确的是:

A.这是两个特殊的对象引用,可以引用类中的 static 成员;

B.这两个特殊引用可在构造函数中调用构造函数,且只能放在第一句;

C.借助 super 可引用超类的私有成员    私有的只能本类访问

D.this 的含义为“自己”,是指对象自身,而非类自身

17、关于抽象方法,以下说法正确的是:

A.  抽象方法是一种功能契约,不实现抽象方法就无法构造对象;

B.  接口中的抽象方法只能是 public 的,而抽象类中的抽象方法可以用其它权限修饰;接口中的抽象方法,默认就是public修饰的

C.  抽象类中的抽象方法只能由其子类来实现;接口中的抽象方法可由不同类来实现;

D.  抽象方法不能用 final 来修饰,可以用 static 来修饰。

解析:继承的时候,子类不能继承父类中的静态变量和方法

18.下面关于 final 修饰符,正确的说法是。

A. final 变量不能被更改, final 类不能派生出子类, final 方法不能被重载;

B. 对 class A{public int x},语句 final A a=new A(); a.x=5; 将会产生编译错;

C. 对计算公式已不需更改的数学函数,常用 public static final 修饰;

D. 若类中有 final abstract 修饰的方法,必须实现该方法才能构造对象。

19.下面关于 static 修饰符,正确的说法是。

A. 与普通变量相比,static 变量只能更改 1 次  只有1份,不是只能改一次

B. 与普通方法相比,static 方法只能借助类名调用,不能借助对象引用;  只是建议用类名调用

C. static 变量被该类所有对象所共享,甚至包括私有 static 变量

D. static 方法不能被重载,只能被重写。

20.以下关于接口的说法正确的是。

A.接口是一种特殊的类,用于表达某种能力;

B. 接口的构造函数用于初始化接口对象;

C. 若当类 A 实现接口 B 时,可将 A 类的对象赋值给 B 型的引用;

D. 接口中的所有成员都具有 public 权限,此外,接口中的方法还必须用 final 修饰,接口中的变量必须用采用 final static 修饰。

21. 下列关于继承、抽象类和接口的说法中,正确的是。

A. 借助继承机制,可把类的复杂性分解到类家族的层次体系中

B. 为获得接口标定的某种能力,类必须继承该接口,并实现接口中的抽象方法

C. java 中的类之间采用单继承,接口之间采用多继承

D. 抽象方法可看成是一种契约,拥有抽象方法的抽象类是类家族内部之间的契约,拥有抽象方法的接口常

22.下列哪种类成员修饰符修饰的变量只能在本类中被访问?( )

A.protected   B.public   C.default     D.private

23.在Java语言中,哪一个包中的类是自动导入的?(   )

A.java.lang   B.java.awt    C.java.io     D.java.applet

24.下面关于方法的说法,正确的是(   )。

A.Java中的构造方法名必须和类名相同

B.方法体是对方法的实现,包括变量声明和合法语句

C.如果一个类定义了构造方法,也可以用该类的默认构造方法

D.类的私有方法不能被其他类直接访问

25.关于内部类,下列说法正确的是(   )。

A.内部类不能有自己的成员方法和成员变量

B.内部类可用private或protected修饰符修饰

C.内部类可以作为其他类的成员,而且可访问它所在的类的成员

D.除static内部类外,不能在类内声明static成员

26定义外部类时能用到的关键字是(   )。

A.final    B.public   C.protected    D.abstract

27.定义一个公有double型常量PI,哪一条语句最好?(    )

A.public final double PI;     

B.public final static double PI=3.14;

C.public final static double PI;   

D.public static double PI=3.14;

28.区分类中重载方法的依据是(   )。

A.形参列表的类型和顺序         B.不同的形参名称

C.返回值的类型不同             D.访问权限不同

29.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?

A.能,能     B.能,不能 C.不能,能   D.不能,不能

30.Java语言类间的继承关系是(    )。

A.单继承     B.多重继承      C.不能继承      D.不一定

31.Java语言接口间的继承关系是(   )。

A.单继承     B.多重继承      C.不能继承      D.不一定

32.一个类实现接口的情况是(   )。

A.一次可以实现多个接口         B.一次只能实现一个接口

C.不能实现接口                 D.不一定

33.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量?(    )

A.不能引用,必须改名,使它们的名称不相同

B.在成员变量前加this,使用this访问该成员变量

C.在成员变量前加super,使用super访问该成员变量

D.不影响,系统可以自己区分

34.下面说法正确的是(   )。

A.抽象类既可以做父类,也可以做子类

B.abstract和final能同时修饰一个类

C.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口

D.声明为final类型的方法不能在其子类中重新定义

35.Java中,关于抽象方法的说法正确的是()。

A.抽象方法可以有方法体。

B.抽象类中的方法都是抽象方法。

C.抽象方法可以出现在非抽象类中。

D.抽象方法是没有方法体的方法。

36. 下列对java中关键字final的说法正确的是()。

A.关键字final可以修饰类,方法,变量。

B.final修饰的类,称为final类,类中方法必须使用final修饰

C.类中被final修饰的方法,在其子类中不能被重写

D.类中的变量如果使用staticfinal修饰,必须声明同时初始化,不可被改变

37. Java中,下列说法正确的是()。

A.私有方法不能被重载

B.静态方法能被重载

C.公有方法被重写之后,可以使用private修饰。

D.一个重写的方法不能抛出在父类中不被检查的异常。

38. 给定java代码如下所示,在1处新增下列()方法,是对show方法的重载

public class Test{ 

      public void show(int x, int y, int z) {    }

      //1

}

A.public int show(int x,int y,float z){return 0;}

B.public int show(int x,int y,int z){return 0;}

C.public void show(int x,int z){}

D.public viod show(int z,int y,int x){}

39. 下面关于调用构造方法的描述中,正确的是()。

A.构造方法在类定义的时候被调用

B.构造方法在创建对象的时候被调用

C.构造方法在调用对象方法时被调用

D.构造方法在使用对象的变量时被调用

40.试图编译运行下面的代码会发生什么情况

public class MyClass{

 static int i;

 public static void main(String argv[]){

 System.out.println(i);

 }

}

A.错误,变量i没有被初始化

B. null

C.1

D. 0

 

-----------------------------------------------------------------------------------------

1.(继承、 this 和super 关键字)有以下代码

class Super{

public Super(){

System.out.println("Super()");

}

public Super(String str){

System.out.println("Super(String)");

}

}

class Sub extends Super{

public Sub(){

System.out.println("Sub()");

}

public Sub(int i){

this();

System.out.println("Sub(int)");

}

public Sub(String str){

super(str);

System.out.println("Sub(String)");

}

}

public class TestSuperSub{

public static void main(String args[]){

Sub s1 = new Sub();

Sub s2 = new Sub(10);

Sub s3 = new Sub("hello");

}

}

写出该程序运行的结果。

2.(static 属性)有如下代码

class MyClass{

static int a;

int b;

}

public class TestMain{

public static void main(String args[]){

MyClass mc1 = new MyClass();

MyClass mc2 = new MyClass();

mc1.a = 100;

mc1.b = 200;

mc2.a = 300;

mc2.b = 400;

System.out.println(mc1.a);

System.out.println(mc1.b);

System.out.println(mc2.a);

System.out.println(mc2.b);

}

}

请写出程序输出结果。

3. (静态方法)有以下代码

class Super{

public static void m1(){

System.out.println("m1 in Super");

}

public void m2(){

System.out.println("m2 in Super");

}

}

class Sub extends Super{

public static void m1(){

System.out.println("m1 in Sub");

}

public void m2(){

System.out.println("m2 in Sub");

}

}

public class TestMain{

public static void main(String args[]){

Super sup = new Sub();

sup.m1();

sup.m2();

Sub sub = (Sub) sup;

sub.m1();

sub.m2();

}}

写出这个程序的运行结果。

4. (final 属性的初始化) *有如下代码

class MyClass{

final int value;

 public MyClass(){}

 public MyClass(int value){

this.value = value;

 }

 }

 public class TestMain{

 public static void main(String args[]){

 MyClass mc = new MyClass(10);

 System.out.println(mc.value);

 }

}

选择正确答案:

A. 编译通过,输出 10

B. 编译不通过,把第 2 行改为 final int value = 10;

C. 编译不通过,把第 3 行改为 public MyClass(){ value = 10; }

你可能感兴趣的:(Java)