第2章 面向对象开发特点
巩固与提高
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、实例变量是用static关键字声明的 C、方法变量在方法执行时创建
D、方法变量在使用之前必须初始化 (6)下列哪些说法是正确的?( ) A、 Java 语言只允许单一继承 B、 Java 语言只允许实现一个接口
C、 Java 语言不允许同时继承一个类并实现一个接口 D、 Java 语言的单一继承使得代码书写更简明清晰 (7)下面对构造方法的不正确描述是( )。 A、 构造方法的方法名必须与类名相同
B、 构造方法可以有参数,所以也可以有返回值 C、 构造方法可以重载 D、 构造方法可以设置参数
(8)关于类的静态成员的不正确描述是( )。 A、静态成员不属于对象,是类的共享成员
11
B、静态数据成员要在类外定义和初始化
C、静态成员方法不拥有this关键字,需要通过类参数访问对象成员 D、只有静态成员方法可以操作静态数据成员 (9)下列类头定义中,错误的是( )。 A、public x extends y {...} B、public class x extends y {...} C、class x extends y {...} D、class x {...}
(10)有一个类A,以下为其构造方法的声明,其中正确的是( )。 A、void A(int x){...} B、public A(int x){...} C、 public a(int x){...} D、 static A(int x){...}
(11)设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( )。 A、 void X(int k ){ i=k; } B、 X(int k ){ i=k; } C、 X(int m, int n ){ i=m; j=n; } D、 X( ){i=0;j=0; }
(12)JAVA语言中,在类定义时使用final关键字修饰,是指这个类( ) A 、不能被继承 B、 在子类方法中不能被调用 C 、能被别的程序自由调用 D 、不能被子类的方法覆盖 (13)下列选项中,用于定义子类时声明父类名的关键字是( ) A 、 interface B、 package C 、 extends D 、 class
(14) 构造方法名必须与______相同,它没有返回值,用户不能直接调用它,只能通过new调用。( )。
A、类名 B、对象名 C、包名 D、变量名 (15)下列修饰符可以用于定义类的是( )
A、 private B、 static C 、abstract D 、protected (16)用于定义类成员的访问控制权的一组关键字是( ) A 、class, float, double, public B、 float , boolean ,int , long C、 char , extends , float , double D、 public ,private ,protected (17)方法的重载是指( )
A、两个或两个以上的方法取相同的方法名,但是参数的个数或类型不同
B、两个以上的方法去相同的名字和具有相同参数个数,但形参的类型可以不同 C、两个以上的方法名字不同,但形参的个数或类型相同
D、两个以上的方法取相同的方法名,但方法的返回值类型相同 (18) 定义主类的类头时可以使用的访问控制符有哪些?( )
A、 public B、protected C、final D、private
(19)关于被私有保护访问控制符 private protected 修饰的成员变量,以下说法正确的是( )
A、可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类
的子类
B、可以被两种类访问和引用:该类本身、该类的所有子类 C、只能被该类自身所访问和修改 D、只能被同一个包中的类访问
(20)运行下面程序,选择正确的输出结果为( )。
12
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
2、判断题 (1)所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是对象。( )
(2)静态初始化器是构造方法之前加上static修饰符。( )
(3)在定义一个类的时候,若想让类中的成员不能在类的外部访问,则必须在成员前面加上private修饰符。( )
(4)类的静态成员属于类所有,实例成员属于对象所有。( ) (5)最终类不能派生子类,最终方法不能被重写。( )
(6)重载方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。重载的多个方法必须返回相同的数据类型。( ) (7)访问修饰符:类中限定为public的成员可以被所有的类访问。( ) (8)类中先定位private的成员只能被这个类本身访问。同一个类的不同对象可以访问对方的private域变量或调用对方的域方法,这是因为访问保护控制在对象的级别上,而不是类的级别上。( )
(9)类中限定为protected的成员可以被这个类本身,它的子类(包括同一个包中和不同包中的子类),以及同一个包中的其他类访问。( )
(10)用private protected修饰的成员可以被该类本身访问,也可以被该类的所有子类访问。( ) 3、填空题
(1) 引用父类中的成员变量用_________;引用当前的类或对象的成员变量用________。. (2)Java中类成员的限定词有以下几种:private, public, _________、 _________。其中,_________的限定的范围最大。
(3)被关键字_________修饰的方法是不能被当前类的子类重新定义的方法。
(4)当类未用访问权限修饰符(public 或private)修饰时,java语言默认此类的访问权
13
限是__________ 。
(5)在Java程序中,通过类的定义只能实现_____ 重继承,但通过接口的定义可以实现______ 重继承关系。
(6)子类重新定义一个与从父类那里继承来的域变量完全相同的变量,这种面向对象程序
设计特性称为域的__________。
(7)如果子类中的某个变量的变量名与它的父类中的某个变量完全一样,则称子类中的这
个变量__________了父类的同名变量。
(8) 如果子类中的某个方法的名字、返回值类型和__________与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。 (9)Java语言中用于表示类间继承的关键字是___________。
(10) 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、子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。
(5)利用多态,设计一个相应的方法,用来计算正方体体积、长方体体积、圆柱体和圆锥体体积。
14
第3章 面向对象设计思想
巩固与提高
1、 选择题
(1)关于抽象类的说法下面哪一种是正确的?( ) A、抽象类可以继承非抽象类 B、抽象类不能实例化对象 C、抽象类必须包含抽象方法
D、继承抽象类的子类必须实现父类中的抽象方法 (2)关于接口的说法下面哪些是正确的?( ) A、在接口中不能定义变量
B、在接口中可以定义非抽象方法
C、在接口中定义的方法都是publie 、abstract D、接口可以实现多继承
(3)关于final的说法下面哪些是正确的?( ) A、final修饰的类可以被继承
B、final修饰的方法不能被子类继承
C、final修饰的成员变量一旦初始化,就不能修改 D、final修饰的方法在子类可以被重写
(4)下列选项中,定义抽象类的关键字是( )。
A、interface B、implements C、 abstract D、 class (5)下列选项中,定义最终类的关键字是( )。
A、interface B、 implements C、 abstract D、 final (6)下列选项中,用于定义接口的关键字是( )。
A、interface B、 implements C、 abstract D、 class
(7)现有类A和接口B,以下描述中表示类A实现接口B的语句是( )。 A、 class A implements B B、 class B implements A C、 class A extends B D、 class B extends A (8)关于抽象类正确的是( )
A、抽象类中不可以有非抽象方法。
B、某个非抽象类的父类是抽象类,则这个子类不一定重载父类所有的抽象方法。 C、不能用抽象类去创建对象。 D、接口和抽象类是同一个概念。 (9)下面选项正确的是( ) A、抽象类可以有构造方法。 B、接口可以有构造方法。
15