Java类型测试题

面向对象部分测试题
本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。

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

  2. 以下关于Object类说法错误的是()。
    A. 一切类都直接或间接继承自Object类
    B. 接口也继承Object类
    C. Object类中定义了toString()方法
    D. Object类在java.lang包中

  3. 在Java中,多态的实现不仅能减少编码的工作量,还能大大提高程序的可维护性及可扩展性,下面哪一个选项不属于多态的条件( )。
    A. 子类重写父类的方法
    B. 子类重载同一个方法
    C. 要有继承或实现
    D. 父类引用指向子类对象
    多态的前提:

  4. 具有子父类或者实现关系

  5. 方法的重写

  6. 父类引用指向子类对象

  7. 编译运行如下Java代码,输出结果是( )。
    class Base {
    public void method(){
    System.out.print (“Base method”);
    }
    }
    class Child extends Base{
    public void methodB(){
    System.out.print (“Child methodB”);
    }
    }
    class Sample {
    public static void main(String[] args) {
    Base base = new Child();
    base.methodB();
    }
    }
    A. Base method
    B. Child methodB
    C. Base method Child MethodB
    D. 编译错误

  8. 下面说法正确的是( )。
    A. final 可修饰类、属性(变量)、方法
    B. abstract可修饰类、方法
    C. 抽象方法只有方法声明,没有方法体
    D. 关键字final和abstract不能同时使用

  9. 在Java接口中,下列选项中属于有效的方法声明是( )。
    A. public void aMethod();
    B. final void aMethod();
    C. void aMethod(){}
    D. private void aMethod();
    默认public abstract 修饰

  10. 下面说法中错误的是
    A. 静态代码块类一加载只执行一次 , 以后再创建对象的时候不执行
    B. 局部代码块的作用是为了限制变量的生命周期
    C. 构造代码块在每创建一次对象就执行一次
    D. 以上都不对

  11. 下面哪些关键字能用来控制对类成员的访问( )?
    A. public
    B. protected
    C. private
    D. default
    权限修饰符:
    private<默认的(default)<protected<public

  12. 给定如下Java代码 , 以下( )方法可以加入Child类中。
    public class Parent{
    int change(){
    //此处省略N行代码
    }
    }
    Class Child extends Parent{
    //(此处可以放入下面哪个选项)
    }
    A. public int change(){}
    B. int show(int i){}
    C. private int change(){}
    D. abstract int change(){}

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

  14. 下面关于变量及其范围的陈述哪些是对的? ( )
    A. 实例变量(区别于类变量,属于对象的变量)是类的成员变量。
    B. 实例变量用关键字static声明。
    C. 在方法中定义的局部变量在该方法被执行时创建
    D. 局部变量在使用前必须被初始化。
    类变量:静态成员变量
    实例变量:非静态成员变量
    局部变量:方法中

  15. 给定两个java程序,如下:
    public interface Face{
    int counter = 40;
    }
    public class Test implements Face{
    private static int counter; //默认值是0
    public static void main(String[]args){
    System.out.println(++counter);
    }
    }
    Test.java 的编译运行结果是( )。
    A. 40
    B. 41
    C. 0
    D. 1

就近原则

  1. 关于abstract不能和哪些关键字共用正确的是()
    A. abstract不可以和private共用
    B. abstract不可以和static共用
    C. abstract不可以和final共用
    D. abstract不可以和public共用

  2. Java中,如果类C是类B的子类,类B是类A的子类,那么下面描述正确的是( )。
    A. C可以继承B中的公有成员,同样也可以继承A中的公有成员
    B. C只继承了B中的成员
    C. C只继承了A中的成员
    D. C不能继承A或B中的成员

  3. 给定java程序,如下:
    public class Test{
    private static final int counter=10;
    public static void main(String [] args){
    System.out.println(++counter);
    }
    }
    编译运行Test.java,结果是 ( )
    A. 10
    B. 11
    C. 编译错误
    D. 运行时出现异常
    final修饰的变量是常量,不能被修改

  4. 给定一个Java程序代码,如下:
    public class Test{
    int count = 9;
    public void count1(){
    int count =10;
    System.out.println(“count1=”+count);
    }
    public void count2(){
    System.out.println(“count2=”+count);
    }
    public static void main(String args[]){
    Test t=new Test();
    t.count1(); //10
    t.count2(); //9
    }
    }

编译运行后,输出结果是
A. count1=9 count2=9
B. count1=10 count2=9
C. count1=10 count2=10
D. count1=9 count2=10

  1. 按照课堂要求在类中定义构造方法和set方法,关于这两个方法描述错误的是( )
    A. 构造方法是用来创建对象或者初始化成员数据的
    B. set方法是为对象中成员变量赋值的
    C. 带参构造在创建对象的时候也可以为成员变量赋值
    D. 类中的带参构造方法与set方法功能是完全重复的,可以只选其一

  2. 程序Test.java编译运行后输出的结果是( )。
    public class Test {
    String s1=“java”;
    public static void main(String args[]) {
    int z=2;
    Test t=new Test();
    System.out.println(t.s1+z);
    }
    }
    A. java2
    B. 2
    C. 没有输出结果
    D. java

  3. 用于定义类成员的访问控制权的一组关键字是( )。
    A. class, float, double, public
    B. float, boolean, int, long
    C. char, extends, float, double
    D. public, private, protected

  4. 给定java代码,如下:编译运行,结果是
    public static void main (String [] args){
    String s;//局部变量使用前要先初始化
    System.out.println(“s=”+s);
    }
    A. 编译错误
    B. 编译通过,但出现运行时错误
    C. 正常运行,输出s=null
    D. 正常运行,输出s=

  5. 关于类和对象的叙述正确的是:( )
    A.Java的类分为两大部分:系统定义的类和用户自定义的类
    B.类的静态属性和全局变量(成员变量)的概念完全一样,只是表达形式不同
    C.编写一个类时,该类的成员至少要有一个成员变量和一个成员方法
    D.类是对象的实例化

  6. 给出下面的不完整的类代码
    class Person {
    String name, department;
    int age;
    public Person(String n){ name = n; }
    public Person(String n, int a){ name = n; age = a; }
    public Person(String n, String d, int a) {
    // 完成Person(String n, int a)的逻辑
    department = d;
    }
    }
    下面的哪些表达式可以加到构造方法中的注释处? ( )
    A. Person(n,a);
    B. this(Person(n,a));
    C. this(n,a);
    D. this(name,age);

  7. 关于对象成员占用内存的说法哪个正确?  (  )
    A.同一个类的对象共用同一段内存
    B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
    C.对象的方法不占用内存
    D.以上都不对

  8. 给定Java代码如下所示,则编译运行后,输出结果是( )。
    class Parent {
    Int money= 5000;
    public void count() {
    System.out.println(10%3);
    }
    }
    public class Child extends Parent{
    Int money= 10000;
    public void count() {
    System.out.println(10/3);
    }
    public static void main(String args[]) {
    Parent p = new Child();
    p.count();
    }
    }
    A. 1
    B. 1.0
    C. 3
    D. 3.3333333333333335

  9. 下面关于外部类和内部类成员的相互访问的规则中,正确的选项是( )。
    A. 内部类可以直接访问外部类的成员
    B. 外部类可以直接访问内部类的成员
    C. 外部类不能访问内部类的成员
    D. 外部类可通过创建内部类的实例来访问内部类的成员

  10. 查看下面代码:
    class A {
    public int i = 10;
    }
    class B extends A{
    public int i = 20;
    }
    public class Test{
    public static void main(String args[]){
    B b = new B();
    A a = b;
    System.out.println(b.i); //20
    System.out.println(a.i); //10
    }
    }
    输出为多少 ( )
    A.10 10
    B.10 20
    C.20 10
    D.20 20

  11. 在Java接口中定义常量,下面语法正确的是( )。
    A. static final int MALE = 1;
    B. final int MALE = 1;
    C. int MALE = 1;
    D. private int MALE = 1;
    public static final

  12. 在Java语言中,下列关于类的继承的描述,正确的是( )。
    A. 一个类可以继承多个父类
    B. 一个类可以具有多个子类
    C. 子类可以使用父类的所有方法
    D. 子类一定比父类有更多的成员方法

  13. 给定如下一个Java源文件Child.java,编译并运行Child.java,以下结果正确的是( )。
    class Parent1 {
    Parent1(String s){
    System.out.println(s);
    }
    }
    class Parent2 extends Parent1{
    Parent2(){
    //super();
    System.out.println(“parent2”);
    }
    }
    public class Child extends Parent2 {
    public static void main(String[] args) {
    Child child = new Child();
    }
    }
    A. 编译错误:没有找到构造器Child()
    B. 编译错误:没有找到构造器Parent1()
    C. 正确运行,没有输出值
    D. 正确运行,输出结果为:parent2

  14. 下列说法哪个正确?
    A.不需要定义类,就能创建对象
    B.对象中必须有属性和方法
    C.属性可以是简单变量,也可以是一个对象
    D、属性必须是简单变量

Class Teacher{
String name;
Student s;
}

  1. 给定java代码,如下:
    public class Test{
    static int i=0;
    public int aMethod( ){
    i++;
    return i;
    }
    public static void main(String [] args){
    Test test = new Test( );
    test.aMethod( );
    System.out.println(test.aMethod( ));
    }
    }编译运行后,输出结果是( )。
    A. 0
    B. 1
    C. 2
    D. 3

  2. 下面关于final说法错误的是 ( )
    A. final修饰的类不可以继承其他类
    B. 内部类在访问局部变量的时候,局部变量需要使用final修饰
    C. 被final修饰的引用类型变量内部的内容是可以发生变化的
    D. final修饰的变量称为常量,这些变量只能赋值一次。

  3. 给出下面的代码
    class Person {
    String name,department;
    public void printValue(){
    System.out.println("name is "+name);
    System.out.println("department is "+department);
    }
    }
    public class Teacher extends Person {
    int salary;
    public void printValue(){
    // 完成父类代码中printValue()相同的工作
    System.out.println("salary is "+salary);
    }
    }
    下面的哪些表达式可以加入printValue()方法的注释部分?
    A. printValue();
    B. this.printValue();
    C. person.printValue();
    D. super.printValue();

  4. 下面关于匿名对象说法错误的是( )
    A. 匿名对象就是没有名字的对象,创建出来该对象后没有赋值给一个引用
    B. 匿名对象调用完方法后还可以继续调用成员变量
    C. 可作为实际参数进行传递
    D. 可以以下面格式使用匿名对象:new 类名().方法名(参数列表);

  5. 在java中,以下程序的输出结果是( )
    class Point {
    int x; //0
    boolean y; //false
    void output() {
    System.out.println(x);
    System.out.println(y);
    }
    public static void main(String[] args) {
    Point pt =new Point();
    pt.output();
    }
    }
    A. 运行错误
    B. 0 ture
    C. 0 false
    D. 0 0

  6. 下面关于 this和super描述正确的是
    A、都可以用在main()方法中
    B、都是指一个对象的内存地址
    C、不能用在main()方法中
    D、意义相同
    Car c = new Car()

  7. 给定如下Java程序代码,在_____横线处加入( )语句,可以使这段代码编译通过。
    interface Parent{
    public int count(int i);
    }
    public class Test implements Parent {
    public int count(int i){
    return i % 9;
    }
    }
    public static void main(String[] args){
    ________________
    int i = p.count(20);
    }
    }
    A. Test p = new Test();
    B. Parent p;
    C. Parent p = new Parent();
    D. Test p = new Parent();

  8. 分析如下Java代码,如果想在控制台上输出“B类的test()方法”,则在主函数应填入( )。
    class A {
    public void test() {
    System.out.println(“A类的test()方法”);
    }
    }
    class B extends A {
    public void test() {
    System.out.println(“B类的test()方法”);
    }
    public static void main(String args[]) {

    }
    }
    A. A a = new B();
    a.test();
    B. A a = new A();
    a.test();
    C. B b = new A();
    b.test();
    D. new B().test();

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

  10. 给定如下 java 代码, 以下( )访问控制修饰符可以填入下划线处。
    class Parent{
    protected void eat(){
    }
    }
    class Child extends Parent {
    _______ void eat(){
    }
    }
    A. protected
    B. private
    C. 什么也不填
    D. public

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值