Java面向对象考试题

Java面向对象测试题

  • 选择题(共20题,每题2分)
  1. 在java语言中,对象的特征在类中标识为变量,称为类的什么?(    )

A、对象 B、属性 C、方法 D、数据类型

  1. 哪项不属于面向对象的特征(    )

A、封装

B、静态

C、继承

D、多态

  1. Java程序中,在子类的构造方法中可以使用(    )关键字来调用父类的构造方法。

A、super B、this C、extends D、implements

  1. 给定java代码所示,则编译运行后,输出的结果是(    )

public class Parent{

public void count(){

     System.out.println(10%3);// 1

}

}

public class Test extends Parent{

public void count(){// 方法的重写

     System.out.println(10/3);

}

Public static void main(String[] args){

    Parent p = new Test();// 编译时看左边,运行时看右边.

    p.count();

}

}

A、1 B、1.0 C、3 D、3.3333333333333

  1. 在java接口中定义常量,以下哪个选项的语法是错误的?(    )

A、static int MALE = 1; B、final int MALE = 1;

C、int MALE = 1; D、private int MALE = 1;

  1. 在Java语言中,下列关于类的继承的描述,正确的是(    )

A、一个类可以继承多个父类   B、一个类可以具有多个子类

C、子类可以使用父类的所有方法   D、子类一定比父类有更多的成员方法

  1. 下列选项中关于Java中super关键字的说法正确的是(    )

A、super关键字是在子类对象内部指代其父类对象的引用

B、super关键字不仅可以指代子类的直接父类,还可以指代父类的父类

C、子类通过super关键字只能调用父类的方法,而不能调用父类的属性

D、子类通过super关键字只能调用父类的属性,而不能调用父类的方法

  1. 在JAVA的异常处理模型中,能单独和finally语句一起使用的块是(    )

A、try B、catch C、throw D、throws

  1. 给定如下java代码,这段程序编译运行后的输出结果是(    )

public class Demo {

public static void aMethod() throws Exception {

try {

throw new Exception();

} finally {

System.out.print("Finally");

}

}

public static void main(String[] args) {

try {

              throw new Exception();

} catch (Exception e) {

System.out.print("Exception");

}

System.out.print("Finished");

}

}

A、FinallyException B、ExceptionFinished

C、ExceptionFinallyFinished D、FinallyExceptionFinished

  1. 下列选项中关于Java中封装的说法错误的是(    )

A、封装就是将属性私有化,提供共有的方法访问私有属性

B、属性的访问方法包括setter方法和getter方法

C、setter方法用于赋值,getter方法用于取值

D、包含属性的类都必须封装属性,否则无法通过编译

  1. Java中,如果类C是类B的子类,类B是类A的子类,那么下面描述正确的是(    ) Cà B à A

A、C不仅继承了B中的成员,同样也继承了A中的成员

B、C只继承了B中的成员

C、C只继承了A中的成员

D、C不能继承A或B中的成员

  1. 分析选项中关于Java中this关键字的说法正确的是(    )

A、this关键字是在对象内部指代自身的引用

B、this关键字可以在类中的任何位置使用

C、this关键字和类关联,而不是和特定的对象关联

D、同一个类的不同对象共用一个this

  1. 阅读下面的java代码,运行结果是(     )

public class B {

public void foo(String[] arr) {

try {

System.out.println(arr.length);

} catch (NullPointerException e) {

System.out.println("In catch one");

} catch (Exception e2) {

System.out.println("In catch two");

} finally {

System.out.println("in finally block");

}

}

public static void main(String[] args) {

new B().foo(args);

}

}

A、程序错误,无法编译

B、0 in finally block 

C、In catch one

D、In catch two

  1. 以下关于抽象类和接口的说法错误的是(    )

A、在抽象类中可以没有抽象方法

B、实现抽象类和接口的类必须实现其中的所有(抽象)方法,除非它也是抽象类。接口中的方法都不能被实现

C、接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

D、接口中的方法都必须加上public关键字。

  1. 给定如下java代码,若编译运行,以下描述正确的是(    )

public class B {

public B() {

System.out.print("B");

}

}

class C extends B {

public C() {

System.out.print("C");

super();// 调用父类的构造函数必须放在方法体的第一行

}

public static void main(String[] args) {

C c = new C();

}

}

A、类C的构造方法存在错误,编译无法通过

B、正常运行,输出:C

C、正常运行,输出:CB

D、正常运行,输出: BC

  1. 下列关于构造方法的叙述中,错误的是(    )

A、java语言规定构造方法名与类名必须相同

B、Java语言规定构造方法没有返回值,但不用void声明

C、Java语言规定构造方法不可以重载

D、Java语言规定构造方法只能通过new自动调用

  1. 关于被私有访问权限控制符private修饰的成员变量,以下说法正确的是(    ) 。

A、可以被三种类所引用:该类自身、与它在同一个包中的其它类、在其它包中的该类的子类。

B、可以被两种类访问和引用:该类本身、该类的所有子类

C、只能被该类自身所访问和修改

D、只能被同一个包中的类访问

  1. 下面哪个函数是public void aMethod(){}的重载函数(    )

A、void aMethod(){} B、public int aMethod(){}

C、public void aMethod(){} D、public int aMethod(int m){}

  1.  下面是有关子类调用父类构造方法的描述,其中正确的是(    )

A、创建子类的对象时,先调用子类构造方法,然后调用父类的构造方法。

B、子类无条件的继承父类不含参数的构造函数

C、子类必须通过super关键字调用父类的构造方法

D、子类可以继承父类的构造方法

  1. 下列代码怎么修改可以使其成功运行(    )

public class Animal {

public void eat() {

System.out.println("动物吃~~~");

}

}

public class Bird extends Animal {

public void eat() {

System.out.println("鸟吃虫子");

}

public void fly() {

System.out.println("鸟儿正在飞");

}

}

public class Test {

public static void main(String[] args) {// 编译时看左边,运行时看右边.

Animal one = new Bird(); //1

one.eat(); //2

one.fly(); //3

}

}

A删除掉标注3位置的one.fly( )

B标注1的Animal one=new Bird()修改为Animal one=new Animal()

C删除掉标注2位置的one.eat( )

D标注1的Animal one=new Bird()修改为Bird one=new Animal()

  • 填空题(共10题,每题2分)
  1. 定义类用的关键字是___class_____,定义接口用的关键字是___interface_____。
  2. 任意类中都有一个方法,专门用来创建类的对象,这个方法叫做___构造方法_____。
  3. 如果要将一个变量定义成常量,可以使用___final____关键字。
  4. 子类继承父类使用____extends_____关键字,子类实现接口使用___implements_____关键字。
  5. 所有异常类的基类是__Exception______,他可以代表并捕捉所有异常类型。
  6. 使用static修饰的变量叫做静态变量,它可以通过___类名____和___对象名____两种方式来进行访问。
  7. 在异常结构中,___try____用来放可能出现异常的代码,___catch____用来捕捉异常。
  8. 在子类中,通过__super_______调用父类中的构造函数。
  9. 局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字___this______。
  10. 面向对象的三个特性:封装、继承和___多态__。在java中,通过对象的__封装____,实现了模块化和信息隐藏。
  • 问答题(共6题,每题5分)
  1. 请说出抽象类与接口的区别?
  1. 抽象类里面既可以写抽象方法和普通方法,接口里面只能写抽象方法;
  2. 抽象类里面既可以定义变量和常量,接口里面只能定义常量;
  3. 抽象类可以被继承,接口可以被实现;
  4. 抽象类可以有构造器,接口不能有构造器;
  5. 抽象类用abstract class定义;接口用interface定义
  1. 请说说重载与重写的区别?
  1. 重载发生在同一个类里面;
  2. 重写发生在继承或者实现接口的关系下;
  3. 重写的时候返回类型/方法名/参数不能改;
  4. 重载,同名不同参(方法名相同,参数不同).--2
  1. 请写出4种访问修饰符的作用域?  0.5

Private:只能本类访问;  1

Friendly:默认,本类,同包. 1

Protected:本类,同包,跨包形成父子关系;  2

Public:本类,同包,跨包. 1

  1. 请谈谈final关键字的作用?

2加在变量前面:该变量就变为常量,必须初始化值,且值不能被修改,名字全大写.

1.5加在前面:该类变为最终的类,不能被继承,可以被实例化;

1.5加在方法前面:该方法不能在子类里面被重写.

  1. 请写出异常体系结构及异常处理的方式?

try{

  放可能出现异常的代码

}catch(异常类型 参数名){

捕捉异常

}finally{

不管上面是否发生异常,都始终会执行的代码

}

  1. 静态和非静态的区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值