笔试_类和对象

来源:互联网 发布:淘宝有人工客服吗? 编辑:程序博客网 时间:2024/05/29 17:44

一、 单选题(每小题2分,共28分)

1. 给出以下代码,请给出结果.


class A{

  Byte x;   //Byte是一个类,byte才是基本数据类型

}

class B{

    public static void main(String[] args){

        B b=new B();

        b.start();

    }

    void start(){

        A a=new A();

        System.out.print(a.x+””);

        A a2=fix(a);

        System.out.print(a.x+” ” +a2.x);

    }

    A fix(A aa){

        aa.x=42;

        return aa;

    }

}

 

 

A:null null 42

B:null 42 42

C:0 0 42

D:0 42 42

E:An exception is thrown at runtime

F:Compilation

 

 

2. Java中,下列关于方法重载的说法中错误的是( 

A:方法重载要求方法名称必须相同

B:重载方法的参数列表必须不一致

C:重载方法的返回类型必须一致

D:一个方法在所属的类中可以被重载多次

 

3. 构造方法何时被调用?

A:类定义时

B:使用对象的变量时

C:调用对象的方法时

D:创建对象时

 

4. Product类别中有boolean型的属性free,请问下列哪些方法可作为free的setter? 

A:public boolean setFree(){return free;}

B:public void setFree(){free=true;}

C:public boolean setFree(){return free;}

D:public void setFree(boolean f){f = free;}

E:public void setFree(boolean f){free = f;}

 

5.  下列说法正确的有() 

A:class中的constructor不可省略

B:constructor必须与class同名,但方法不能与class同名

C:constructor在一个对象被new时执行

D:一个class只能定义一个constructor

 

 

6. 局部变量能否和成员变量重名?

A:可以,局部变量可以与成员变量重名,这时可用“this”来指向成员变量

B:可以,这时可用“local”关键字来指向局部变量

C:不能,局部变量不能与成员变量重名

D:不能,在一个类中不能有重名变量,不管是成员变量还是函数中的局部变量

 

 

7. 有以下程序片段,下列哪个选项不能插入到行1。(    )

 

1.

2.public  class  Interesting{

3.   // 省略代码

4.}

 

A:import 语句

B:package 语句

C:

 

class OtherClass{  

    //省略代码

}

 

D:

 

public class MyClass{ 

    //省略代码

}

 

 

8. 下面哪个对类的声明是错误的()

A:class MyClass extends MySuperClass1, MySupperClass2 {}

B:public class MyClass{}

C:abstract class MyClass implements YourInterface1, Youriterface2 {}

D:private class MyClass {}

E:class MyClass extends MySuperClass implements YourInterface {}

 

9.有关类和对象,以下说法错误的是?

A:同一个类的所有对象都拥有相同的特征和行为

B:类和对象一样,只是说法不同

C:对象是具有属性和方法的实体

D:类规定了对象拥有的特征和行为

 

 

10. 根据下面的程序代码,哪些选项的值返回true?

1

2

3

4

5

6

7

8

9

10

11

12

13

public class Square {  

    long width;  

    public Square(long l) {   

        width = l;  

    }  

    public static void main(String arg[]) {   

        Square a, b, c;  

        a = new Square(42L);   

        b = new Square(42L);   

        c = b;   

        long s = 42L;  

    } 

}

 

 

A:a == b

B:s == a

C:b == c

D:a.equals(s)

 

11. 现有类Foo,下列构造器定义正确的是()

A:public void Foo(){}

B:public foo(){}

C:public Constructor(){}

D:public Foo(){}

 

12.

 

在如下所示的类Test中,共有()个构造方法。

public class Test

{

    private int x;

    public Test()

    {

        x = 35;

    }

  

    public void Test(double f)

    {

        this.x = (int)f;

    }

  

    public Test(double f)

    {

        this.x = (int)f;

    }

  

    public Test(String s) {}

}

 

A:1

B:2

C:3

D:4

 

13. 研究下列代码

 

public class Test {

 String s = "nba";

 public void test(String s)

 {

  System.out.println("s:"+s);

  System.out.println("this.s:"+this.s);

  this.s=s;

  System.out.println("s:"+s);

  System.out.println("this.s:"+this.s);

 }

 /**

  * @param args

  */

 public static void main(String[] args) {

  new Test().test("cba");

 }

}

将输出结果(  )

A:s:cba  this.s:nba  s:cba   this.s:nba

B:s:nba  this.s:nba  s:nba   this.s:nba

C:s:cba   this.s:nba  s:cba   this.s:cba

D:s:nba  this.s:cba   s:cba   this.s:cba

 

14. 请问以上程序执行的结果是?()

 

public class Test{ 

    public String name="abc"; 

    public static void main(String[] args){ 

        Test test=new Test(); 

        Test testB=new Test(); 

        System.out.println(test.equals(testB)+","+test.name.equals(testB.name)); 

    } 

}

 

A:true,true

B:true,false

C:false,true

D:false,false

 

二、 多选题(每小题3分,共6分)

1. 关于构造函数的说法不正确的是?(选出正确的三项)

A:一个类只能有一个构造函数

B:一个类可以不显示提供构造函数

C:构造函数与类同名

D:一个类可以有多个不同名的构造函数

E:构造函数不声明返回值类型

F:无参构造方法在任何情况下都默认存在

 

2. 下列说法错误的有?(选出正确的两项)

A:在类方法中可用this来调用本类的类方法 //静态方法中没有this指针

B:在类方法中调用本类的类方法时可直接调用

C:在类方法中只能调用本类中的类方法

D:在类方法中绝对不能调用实例方法

 

三、 简答 (每小题5分,共10分)

1. 简单描述面向对象的三大特性 

面向对象的三个基本特征是:封装、继承、多态(如果要答四个的话,可以增加一个抽象)

封装1.把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类)。简单的说就是把所有的属性设置为私有的,然后每个私有属性都提供gettersetter方法。

  2.“信息隐藏”,把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节。

继承1.继承是多态的前提

  2.Java只支持单继承,但可以间接继承,

  3.接口可以实现多继承

   4.让类与类之间产生了关系,提高了代码的复用性

多态指同一个实体同时具有多种形式(好比不同的人,执行同一件事,得到的结果不一样)

  多态必须满足以下条件

1. 必须存在继承关系

2. 必须存在方法的重写

3. 父类引用指向子类的对象

 

2. 请写出Overload和Override区别。参数列表相同,返回值不同的方法,是否是重载方法?

Overload(重载):1.在同一个类中

   2.方法名相同

   3.参数列表不同(参数的数量不同、参数的类型不同、参数的顺序不同)

     Override(重写):1.在不同类中

         2.要有继承关系

                       3.类名、修饰符等要全部一致(等同于复制)

                       4.子类的权限不能低于父类(不能降级)

 

不是重载对返回值没有要求,可以相同,也可以不同

但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载

 

原创粉丝点击