Java300集-第四章面向对象基础练习题及答案

一、选择题

1.以下语句中关于Java构造方法的说法错误的是( )。(选择一项)

A.构造方法的作用是为创建对象进行初始化工作,比如给成员变量赋值

B.一个Java类可以没有构造方法,也可以提供1个或多个构造方法

C.构造方法与类同名,不能书写返回值类型

D.构造方法的第一条语句如果是super(),则可以省略,该语句作用是调用父类无参数的构造方法

B 解析:每一个Java类可以有一个以上的构造器,每一个构造器可以有0个、1个或多个参数。可以有多个构造方法,但是不能没有,系统会自动给予构造方法。B选项把构造器的参数与构造器混淆,所以是错误的。

2.在Java中,以下程序编译运行后的输出结果为( )。(选择一项)

public class Test {
    int x, y;
    Test(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public static void main(String[] args) {
        Test pt1, pt2;
        pt1 = new Test(3, 3);
        pt2 = new Test(4, 4);
        System.out.print(pt1.x + pt2.x);
    }
}

A.6

B.34

C.8

D.7

D.

3.在Java中关于静态方法,以下说法中正确的是( )。(选择二项)

A.静态方法中不能直接调用非静态方法

B.非静态方法中不能直接调用静态方法

C.静态方法可以用类名直接调用

D.静态方法里可以使用this

AC. 静态方法是不在对象上执行的方法,是没有this参数的方法,可以直接使用类名调用静态方法。非静态方法中可以直接使用对象调用静态方法。

4.下列选项中关于Java中类方法的说法错误的是( )。(选择二项)

A.在类方法中可用this来调用本类的类方法

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

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

D.在类方法中调用实例方法需要先创建对象

AC. 类方法其实就是静态方法,从属于类。静态方法中不能使用关键字this,选项A错。静态方法可以直接使用类名调用,而无需创建对象,选项B正确。静态方法中不能调用非静态方法,但是只要定义好地址,就可以使用外部类。类方法中也可以调用其他类的类方法。同时可以通过创建对象来调用普通方法。选项C错误。类方法可以直接使用类名调用,而无需创建对象,选项D错。

5.分析如下Java程序的代码所示,则编译运行后的输出结果是( )。(选择一项)

public class Test {
    int count=9;
    public void count1(){
        int count=10;
        System.out.print("count1="+count);
    }
    public void count2(){
        System.out.print("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;

B.要区方法局部变量和类成员变量之间的关系。第一个输出语句中的count是count1()方法的局部变量,而count2()方法中没有局部变量,所以第二个输出语句中的count是Test类的成员变量。

二、简答题

1. 面向过程和面向对象的区别。

都是解决问题的思维方式,都是代码组织的方式;解决简单问题可以使用面向过程;解决复杂问题,宏观上使用面向对象把握,微观处理上仍然是面向过程;

2. 类和对象的关系

类是具备相同特征的对象的集合。也可以理解为类是模板,对象是根据模板制作出来的实物。

3. 构造方法的作用和特征

作用:构造器又叫构造方法,用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。
特征:通过new关键字调用;构造器虽然有返回值,但是不能定义返回值类型,不能再构造器里使用return返回某个值;如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数,如果已经定义编译器不会自动添加;构造器的名称应与类的名称一致。

4. this关键字的作用和用法

**作用:**this的本质就是“创建好的对象的地址”,由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”。
用法:
1.在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。
2.使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中使用,并且必须位于构造方法的第一句。3.this不能用于static方法中。

5. 简述static关键字的作用。

提示:从static可以修饰变量,方法,代码块,三个方面来回答。

1.static修饰变量为该类的公用变量,属于类,将该类的所有实例共享,在类被载入时被显式初始化。
2.对于该类的所有对象来说,static成员变量只有一份,被该类的所有对象共享!!!
3.一般用“类名.类属性/方法”来调用。
4.在static方法中不可直接访问非static的成员。

三、编码题

1. 编写 Java 程序用于显示人的姓名和年龄。定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。在 main 方法中创建人类的实例然后将信息显示。

public class Person {
    private String  name;
    private int age;

    public Person(String name,int age){
        this.name =name ;
        this.age = age;
    }

    public void display(){
        System.out.println("name:"+name+"\t"+"age:"+age);
    }

    public static void main(String args[]){
        Person p1 = new Person("张三",18);
        p1.display();

    }
}

2. 定义一个圆类——Circle,在类的内部提供一个属性:半径®,同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。 通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对 Circle 类进行使用。

圆类代码:

public class Circle {
    double r;
    public Circle(double r){
        this.r = r;
    }
    public void getArea(){
        double area =  Math.PI * Math.pow(r,2);
        System.out.println("圆的面积:"+area);
    }
    public void getPerimeter(){
        double perimeter= 2 * Math.PI * r;
        System.out.println("圆的周长"+perimeter);
    }
}

测试类代码:

public class Test {
    public static void main(String args[]){
        Circle r = new Circle(3);
        r.getArea();
        r.getPerimeter();
    }
}

3. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码是必须的,缺省 email地址是用户 ID 加上字符串"@gameschool.com"。

public class User {
    int id;
    String password;
    String email;

    public User(int id,String password,String email){
        this.id = id;
        this.password = password;
        this.email = email;
    }
    public User(int id,String password){
        this.id = id;
        this.password = password;
        this.email = this.id + "@gameschool.com";
    }
    public void test(){
        System.out.println(id+"\t"+password+"\t"+email);
    }

    public static void main(String args[]){
        User u1 = new User(1001,"asd123","[email protected]");
        User u2 = new User(1002,"zxc456");
        u1.test();
        u2.test();
    }
}

你可能感兴趣的:(Java,java)