Java面向对象测试题
- 选择题(共20题,每题2分)
- 在java语言中,对象的特征在类中标识为变量,称为类的什么?( )
A、对象 B、属性 C、方法 D、数据类型
- 哪项不属于面向对象的特征( )
A、封装
B、静态
C、继承
D、多态
- Java程序中,在子类的构造方法中可以使用( )关键字来调用父类的构造方法。
A、super B、this C、extends D、implements
- 给定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
- 在java接口中定义常量,以下哪个选项的语法是错误的?( )
A、static int MALE = 1; B、final int MALE = 1;
C、int MALE = 1; D、private int MALE = 1;
- 在Java语言中,下列关于类的继承的描述,正确的是( )
A、一个类可以继承多个父类 B、一个类可以具有多个子类
C、子类可以使用父类的所有方法 D、子类一定比父类有更多的成员方法
- 下列选项中关于Java中super关键字的说法正确的是( )
A、super关键字是在子类对象内部指代其父类对象的引用
B、super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
C、子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D、子类通过super关键字只能调用父类的属性,而不能调用父类的方法
- 在JAVA的异常处理模型中,能单独和finally语句一起使用的块是( )
A、try B、catch C、throw D、throws
- 给定如下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
- 下列选项中关于Java中封装的说法错误的是( )
A、封装就是将属性私有化,提供共有的方法访问私有属性
B、属性的访问方法包括setter方法和getter方法
C、setter方法用于赋值,getter方法用于取值
D、包含属性的类都必须封装属性,否则无法通过编译
- Java中,如果类C是类B的子类,类B是类A的子类,那么下面描述正确的是( ) Cà B à A
A、C不仅继承了B中的成员,同样也继承了A中的成员
B、C只继承了B中的成员
C、C只继承了A中的成员
D、C不能继承A或B中的成员
- 分析选项中关于Java中this关键字的说法正确的是( )
A、this关键字是在对象内部指代自身的引用
B、this关键字可以在类中的任何位置使用
C、this关键字和类关联,而不是和特定的对象关联
D、同一个类的不同对象共用一个this
- 阅读下面的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
- 以下关于抽象类和接口的说法错误的是( )
A、在抽象类中可以没有抽象方法
B、实现抽象类和接口的类必须实现其中的所有(抽象)方法,除非它也是抽象类。接口中的方法都不能被实现
C、接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
D、接口中的方法都必须加上public关键字。
- 给定如下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
- 下列关于构造方法的叙述中,错误的是( )
A、java语言规定构造方法名与类名必须相同
B、Java语言规定构造方法没有返回值,但不用void声明
C、Java语言规定构造方法不可以重载
D、Java语言规定构造方法只能通过new自动调用
- 关于被私有访问权限控制符private修饰的成员变量,以下说法正确的是( ) 。
A、可以被三种类所引用:该类自身、与它在同一个包中的其它类、在其它包中的该类的子类。
B、可以被两种类访问和引用:该类本身、该类的所有子类
C、只能被该类自身所访问和修改
D、只能被同一个包中的类访问
- 下面哪个函数是public void aMethod(){}的重载函数( )
A、void aMethod(){} B、public int aMethod(){}
C、public void aMethod(){} D、public int aMethod(int m){}
- 下面是有关子类调用父类构造方法的描述,其中正确的是( )
A、创建子类的对象时,先调用子类构造方法,然后调用父类的构造方法。
B、子类无条件的继承父类不含参数的构造函数
C、子类必须通过super关键字调用父类的构造方法
D、子类可以继承父类的构造方法
- 下列代码怎么修改可以使其成功运行( )
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分)
- 定义类用的关键字是___class_____,定义接口用的关键字是___interface_____。
- 任意类中都有一个方法,专门用来创建类的对象,这个方法叫做___构造方法_____。
- 如果要将一个变量定义成常量,可以使用___final____关键字。
- 子类继承父类使用____extends_____关键字,子类实现接口使用___implements_____关键字。
- 所有异常类的基类是__Exception______,他可以代表并捕捉所有异常类型。
- 使用static修饰的变量叫做静态变量,它可以通过___类名____和___对象名____两种方式来进行访问。
- 在异常结构中,___try____用来放可能出现异常的代码,___catch____用来捕捉异常。
- 在子类中,通过__super_______调用父类中的构造函数。
- 局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字___this______。
- 面向对象的三个特性:封装、继承和___多态__。在java中,通过对象的__封装____,实现了模块化和信息隐藏。
- 问答题(共6题,每题5分)
- 请说出抽象类与接口的区别?
- 抽象类里面既可以写抽象方法和普通方法,接口里面只能写抽象方法;
- 抽象类里面既可以定义变量和常量,接口里面只能定义常量;
- 抽象类可以被继承,接口可以被实现;
- 抽象类可以有构造器,接口不能有构造器;
- 抽象类用abstract class定义;接口用interface定义
- 请说说重载与重写的区别?
- 重载发生在同一个类里面;
- 重写发生在继承或者实现接口的关系下;
- 重写的时候返回类型/方法名/参数不能改;
- 重载,同名不同参(方法名相同,参数不同).--2
- 请写出4种访问修饰符的作用域? 0.5
Private:只能本类访问; 1
Friendly:默认,本类,同包. 1
Protected:本类,同包,跨包形成父子关系; 2
Public:本类,同包,跨包. 1
- 请谈谈final关键字的作用?
2加在变量前面:该变量就变为常量,必须初始化值,且值不能被修改,名字全大写.
1.5加在类前面:该类变为最终的类,不能被继承,可以被实例化;
1.5加在方法前面:该方法不能在子类里面被重写.
- 请写出异常体系结构及异常处理的方式?
try{
放可能出现异常的代码
}catch(异常类型 参数名){
捕捉异常
}finally{
不管上面是否发生异常,都始终会执行的代码
}
- 静态和非静态的区别?