巩固与提高

1.选择题

(1)对于构造方法,下列叙述中不正确的是( )。

A.构造方法是类的一种特殊方法,它的方法名必须与类名相同

B.构造方法的返回类型只能是void型

C.构造方法的主要作用是完成对类的对象的初始化工作

D.一般在创建新对象时,系统会自动调用构造方法

(2)在Java中,一个类可同时定义多个同名的方法,这些方法的参数个数、参数类型或参数顺序有所不相同,返回的值也可以不相同。这种面向对象程序特性称为( )。

A.隐藏

B.重写

C.重载

D.Java不支持此特性

(3)下面哪个修饰符修饰的变量是所有同一个类生成的对象共享的( )。

A.public

B.private

C.static

D.final

(4)下面关于Java中类的说法中,不正确的是( )。

A.类体中只能有变量定义和成员方法的定义,不能有其他语句

B.构造函数是类中的特殊方法

C.类一定要声明为public,才可以执行

D.一个Java文件中可以有多个class定义

(5)方法的重载是指同一个类中( )。

A.两个或两个以上的方法取相同的方法名,但是参数的个数或类型不同

B.两个以上的方法取相同的名字和具有相同参数个数和相同的参数类型

C.两个以上的方法名字不同,但形参的个数或类型相同

D.两个以上的方法取相同的方法名,但方法的返回值类型相同

(6)下列说法中,正确的是( )。

A.Java语言中类只允许单一继承

B.Java语言只允许实现一个接口

C.Java语言不允许同时继承一个类并实现一个接口

D.Java语言中类支持多重继承

(7)下面对构造方法的描述中,不正确的是( )。

A.构造方法的方法名必须与类名相同

B.构造方法可以有参数,所以也可以有返回值

C.构造方法可以重载

D.构造方法可以设置默认参数

(8)关于类的静态成员的描述中不正确的是( )。

A.静态成员不属于对象,是类的共享成员

B.静态数据成员要在类外定义和初始化

C.静态成员方法不能引用this关键字

D.静态成员方法可以操作静态数据成员

(9)下列选项中,用于定义子类时指明父类名的关键字是( )。

A.import

B.package

C.extends

D.class

(10)下列关键字中,用于声明类的关键字是( )。

A.implement B.package

C.extends

D.class

(11)有一个类A,以下为其构造方法的声明,其中正确的是( )。

A.void A(int x){...}

B.public A(int x){...}

C.public a(int x){...}

D.static A(int x){...}

(12)下列哪一组关键字全是用于定义类成员的访问控制权( )。

A.class,float,double,public

B.float,boolean,int,long

C.char,extends,float,double

D.public,private,protected

(13)运行下面的程序,正确的输出结果为( )。

        public class Cat{
            String name;
            public void show(){
              System.out.print("Cat");
            }
            public static void main(String args[]){
              Cat c = new Tiger( );
              c.show();
            }
        }
        class Tiger extends Cat{
              public void show(){
                  System.out.print("Tiger");
              }
          }

A.Cat

B.Tiger

C.Cat Tiger

D.Tiger Cat

(14)设有下面的一个类定义:

            class  AA{
            static  void  show(){  System.out.println("我喜欢Java!");  }
            }
            class  BB{
            void  show(){  System.out.println("我喜欢C++!");  }
            }

若已经使用AA类创建对象a和BB类创建对象b,则下面哪两个方法调用是正确的( )。

A.a.show() b.show()

B.AA.show();BB.show();

C.AA.show();b.show();

D.a.show();BB.show();

2.判断题

(1)所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是对象。( )

(2)静态初始化器是构造方法之前加上static修饰符。( )

(3)在定义一个类时,若想让类中的成员不能在类的外部访问,则必须在成员前面加上private修饰符。( )

(4)类的静态成员属于类所有,实例成员属于对象所有。( )

(5)最终类不能派生子类,最终方法不能被重写。( )

(6)重载方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。重载的多个方法必须返回相同的数据类型。( )

(7)类中限定为public的成员可以被所有的类访问。( )

3.填空题

(1)引用直接父类中的成员变量用____________关键字;引用当前对象的成员变量用_____________关键字。

(2)Java中类成员的权限限定词有以下几种:private、public、_________、_________。其中,_________的限定范围最大。

(3)当类未用访问权限修饰符(public或private)修饰时,Java语言默认此类的访问权限是__________。

(4)如果子类中的某个成员变量的变量名与它父类中的某个成员变量完全一样,则称子类中的这个变量__________父类的同名变量。

(5)如果子类中的某个方法的名字、返回值类型和__________与它的父类中的某个方法完全一样,则称子类中的这个方法重写了父类的同名方法。

(6)Java语言中用于表示类间继承的关键字是___________。

4.操作题

(1)设计一个盒子类Box,它有长、宽、高三个私有成员属性,包含无参数和有参数的构造方法,分别实现设置和获取属性的setter和getter方法,以及求盒子体积的公有方法。其中,构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。再编写一个主类BoxTest,在其主方法main()中创建若干个Box对象,输出其长、宽、高及其体积的值。

(2)定义com.bean包,将习题(1)定义的Box类放入com.bean中;定义com.test包,将主类BoxTest放入com.test包中,在main()中导入com.bean包,使用Box类输出长方形的长、宽、高及其体积的值。

(3)定义一个动物类Animal,有动物类型属性type和动物发声的方法sound();定义基于动物类的狗类Dog和猫类Cat,这两个类都要求覆盖父类的发声方法;定义AnimalDemo类,声明一个Animal对象,分别创建一个Dog、Cat类的对象,然后通过Animal对象来访问Dog、Cat类对象的sound()方法。

(4)设计一个表示二维平面上圆的类Circle,有表示圆半径的protected类型的成员变量radius、获取和设置radius值的public方法、计算圆面积的public方法。设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量height、获取和设置height值的public方法、计算圆柱体体积的public方法。建立若干个Cylinder对象,输出其半径、高及其体积的值。要求:

A.每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。

B.子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。