视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
【黑马考试】2.Java面向对象知识测试_答案_3月31日
2025-10-06 11:40:29 责编:小OO
文档
面向对象部分测试题

考试宣言:

同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!

我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!

本套题共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中,多态的实现不仅能减少编码的工作量,还能大大提高程序的可维护性及可扩展性,下面哪一个选项不属于多态的条件( B)。

    A.    子类重写父类的方法

    B.    子类重载同一个方法

    C.    要有继承或实现

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

4.编译运行如下Java代码,输出结果是( d  )。

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.    编译错误

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

A. final 可修饰类、属性(变量)、方法              

B. abstract可修饰类、方法

C. 抽象方法只有方法声明,没有方法体 

D. 关键字final和abstract不能同时使用

6.在Java接口中,下列选项中属于有效的方法声明是( b)。

    A.    public void aMethod();

    B.    final void aMethod();

    C.    void aMethod(){} 

    D.    private void aMethod(); 

7.下面说法中错误的是d

A.静态代码块类一加载只执行一次 , 以后再创建对象的时候不执行

B.局部代码块的作用是为了变量的生命周期

C.    构造代码块在每创建一次对象就执行一次

D.    以上都不对

8.下面哪些关键字能用来控制对类成员的访问(  c)?

A. public   

B. protected    

C. private     

D. default        

9.给定如下Java代码 , 以下( a )方法可以加入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(){} 

10.在Java中,如果父类中的某些方法不包含任何逻辑,并且需要有子类重写,应该使用(    c )关键字来声明父类的这些方法。 

A.    final 

B.    static  

C.    abstract  

D.    void   

11.下面关于变量及其范围的陈述哪些是对的? (   )

A. 实例变量(区别于类变量,属于对象的变量)是类的成员变量。

B. 实例变量用关键字static声明。

C. 在方法中定义的局部变量在该方法被执行时创建

D. 局部变量在使用前必须被初始化。

12.给定两个java程序,如下: 

public interface Face{   

int counter = 40;     

}       

public class Test implements Face{   

private static int counter;    

public static void main(String[]args){ 

      System.out.println(++counter);         

}     

}   

Test.java 的编译运行结果是( b)。  

A.    40  

B.    41  

C.    0  

D.    1 

13.关于abstract不能和哪些关键字共用正确的是(ABC)

A.    abstract不可以和private共用 

B.    abstract不可以和static共用

C.    abstract不可以和final共用 

D.    abstract不可以和public共用

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

    A.    C可以继承B中的公有成员,同样也可以继承A中的公有成员

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

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

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

15. 给定java程序,如下:    

public class Test{ 

private static final int counter=10;  

public static void main(String [] args){          

System.out.println(++counter);        

}    

 编译运行Test.java,结果是 (C )   

A.    10 

B.    11  

C.    编译错误 

D.    运行时出现异常 

16.给定一个Java程序代码,如下:b

 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();  

t.count2();  

}

 编译运行后,输出结果是

A.    count1=9 count2=9  

B.    count1=10 count2=9  

C.    count1=10 count2=10  

D.    count1=9 count2=10 

17.按照课堂要求在类中定义构造方法和set方法,关于这两个方法描述错误的是(   d)

A.    构造方法是用来创建对象或者初始化成员数据的

    B.    set方法是为对象中成员变量赋值的

    C.    带参构造在创建对象的时候也可以为成员变量赋值

    D.    类中的带参构造方法与set方法功能是完全重复的,可以只选其一

18.程序Test.java编译运行后输出的结果是(  a )。

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

19.用于定义类成员的访问控制权的一组关键字是(  d  )。 

A.  class, float, double, public 

B.  float, boolean, int, long 

C.  char, extends, float, double 

D.  public, private, protected 

20.给定java代码,如下:编译运行,结果是

 public static void main (String [] args){ a

String s;  

System.out.println(“s=”+s); 

 } 

A.    编译错误 

B.    编译通过,但出现运行时错误  

C.    正常运行,输出s=null  

D.    正常运行,输出s= 

21.关于类和对象的叙述正确的是:(   )

 A.Java的类分为两大部分:系统定义的类和用户自定义的类

 B.类的静态属性和全局变量(成员变量)的概念完全一样,只是表达形式不同

 C.编写一个类时,该类成员至少要有一个成员变量和一个成员方法

 D.类是对象的实例化    

22.给出下面的不完整的类代码

  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); 

23.关于对象成员占用内存的说法哪个正确?  ( b )

A.同一个类的对象共用同一段内存    

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

C.对象的方法不占用内存

D.以上都不对

24.给定Java代码如下所示,则编译运行后,输出结果是( c)。

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

25.下面关于外部类和内部类成员的相互访问的规则中,正确的选项是(  a  )。

A. 内部类可以直接访问外部类的成员

B. 外部类可以直接访问内部类的成员

C. 外部类不能访问内部类的成员

D. 外部类可通过创建内部类的实例来访问内部类的成员

26.查看下面代码:

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;  // A a = new B(); 

        System.out.println(b.i); 

        System.out.println(a.i); 

    }

 }

输出为多少 ( d)

   A.10 10   

   B.10 20     

   C.20 10   

   D.20 20

27.在Java接口中定义常量,下面语法正确的是( c)。

    A.    static final int MALE = 1;

    B.    final int MALE = 1;

    C.    int MALE = 1;

    D.    private int MALE = 1;

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

    A.    一个类可以继承多个父类

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

    C.    子类可以使用父类的所有方法

    D.    子类一定比父类有更多的成员方法

29.给定如下一个Java源文件Child.java,编译并运行Child.java,以下结果正确的是(b )。

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

30.下列说法哪个正确?

A.不需要定义类,就能创建对象

B.对象中必须有属性和方法

C.属性可以是简单变量,也可以是一个对象

D、属性必须是简单变量

31.给定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( )); 

 }编译运行后,输出结果是(b )。 

A.    0  

B.    1  

C.    2  

D.    3 

32.下面关于final说法错误的是 (  b )

A.    final修饰的类不可以继承其他类

B.    内部类在访问局部变量的时候,局部变量需要使用final修饰

C.    被final修饰的引用类型变量内部的内容是可以发生变化的

D.    final修饰的变量称为常量,这些变量只能赋值一次。    

33.给出下面的代码

  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();

34.下面关于匿名对象说法错误的是(   )

A.    匿名对象就是没有名字的对象,创建出来该对象后没有赋值给一个引用

B.    匿名对象调用完方法后还可以继续调用成员变量    

C.    可作为实际参数进行传递

D.    可以以下面格式使用匿名对象:new 类名().方法名(参数列表);

35.在java中,以下程序的输出结果是(  )

class Point  {     

int x; 

     boolean y;     

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 

36.下面关于 this和super描述正确的是

    A、都可以用在main()方法中

B、都是指一个对象的内存地址

C、不能用在main()方法中

D、意义相同

37.给定如下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();

38.分析如下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();

39.下面覆盖与重载的关系,说法正确的是  (  )

A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中

B.覆盖方法可以不同名,而重载方法必须同名

C.final修饰的方法可以被覆盖,但不能被重载

D.覆盖与重载是同一回事

40.给定如下 java 代码, 以下(    )访问控制修饰符可以填入下划线处。  

class Parent{ 

protected void eat(){

}  

 class Child extends Parent { 

_______ void eat(){

}  

A.    protected  

B.    private  

C.    什么也不填  

D.    public下载本文

显示全文
专题