Java程序设计基础(微课版)(第2版)第4章习题与答案_第1页
Java程序设计基础(微课版)(第2版)第4章习题与答案_第2页
Java程序设计基础(微课版)(第2版)第4章习题与答案_第3页
Java程序设计基础(微课版)(第2版)第4章习题与答案_第4页
Java程序设计基础(微课版)(第2版)第4章习题与答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章习题练习与参考答案第一部分:习题一、选择题1.()不是面向对象编程的特征A.封装性B.健壮性C.多态性D.继承性2.关于类的定义错误的是()A.publicclasstestextendsObject{......}B.finalclassoperators{......}C.classPoint{......}D.voidclassPoint{......}3.关于构造方法,下面说法错误的是()A.构造方法不可以进行方法重载B.构造方法用来初始化该类的一个新对象C.构造方法具有和类名相同的名称D.构造方法不返回任何值4.this的作用包括()A.调用本类的构造方法B.表示类中的数据成员C.调用本类的成员方法D.以上都是5.构造方法在()时被调用A.类定义B.创建对象C.调用对象方法D.使用对象变量6.尝试编译以下程序会产生怎么样的结果?A.编译错误将发生在(1),因为构造函数不能指定返回值B.编译错误将发生在(2),因为该类没有默认构造函数C.编译错误将在(3)处发生,因为该类没有构造函数,该构造函数接受一个int类型的参数D.该程序将正确编译和执行7.在下列关于静态方法的描述中,错误的是()A.静态方法并不操作调用它的对象,所以不能用静态方法来访问实例属性B.可以使用"类名.方法名"来调用静态方法C.可以使用"对象.方法名"来调用静态方法D.静态方法需要先创建实例之后,才可以引用8.下面关于静态方法和实例方法的描述中,正确的是()A.静态方法可以访问静态数据成员,不可以访问实例数据成员B.实例方法可以访问静态数据成员,不可以访问实例数据成员C.静态方法可以访问静态数据成员,也可以访问实例数据成员D.静态方法不可以访问静态数据成员,也不可以访问实例数据成员9.关于static说法不正确的是()A.可以直接用类名来访问类中静态方法(public权限)B.静态块仅在类加载时执行一次C.static方法中不能有用this调用的方法D.不可以用对象名来访问类中的静态方法(public权限)10.关于下面的程序Test.java说法正确的是()A.3B.112C.13D.程序编译错误第6题代码:publicclassMyClass{

longvar;

publicvoidMyClass(longparam){var=param;}//(1)

publicstaticvoidmain(String[]args){

MyClassa,b;

a=newMyClass();//(2)

b=newMyClass(5);//(3)

}

}第10题代码:publicclassTest{

staticStringx="1";

staticinty=1;

publicstaticvoidmain(Stringargs[]){

staticintz=2;

System.out.println(x+y+z);

}

}二、问答题1.举例说明类和对象的关系。2.为什么说构造方法是一种特殊的方法?它与一般的成员方法有什么不同?3.举例说明类方法和实例方法,以及类变量和实例变量的区别。4.子类将继承父类的哪些成员变量和方法?子类在什么情况下隐藏父类的成员变量和方法?在子类中是否允许有一个方法与父类的方法名字和参数相同,而类型不同?说明理由。三、编程题1.编写一个Java应用程序,描写一个矩形类,并输出某个矩形的长、宽、周长和面积。具体要求如下:(1)定义Rectangle类,声明两个成员变量分别描述矩形的长和宽。(2)在Rectangle中声明两个方法分别计算矩形的周长和面积。(3)编写应用程序类,创建一个具体的矩形对象,在屏幕上打印输出该矩形的长、宽、周长和面积。2.按以下要求创建一个学生类(Student),并完成相应的操作。(1)其成员变量:姓名(name)、年龄(age)、身高(height)、体重(weight)(2)成员方法1:setAge用于给变量age赋值。(3)成员方法2:showInfo按一定格式输出各成员变量的值。(4)构造方法:通过参数传递,分别对name、height、weight初始化。(5)最后,创建这个类的对象,并完成对成员变量赋值和输出的操作。3.补充程序,验证方法的重载。下面已给出Area类的定义,定义应用程序类AreaTest,创建Area类的对象并调用每一个成员方法,观察不同的参数与调用方法的之间的关系。Area类程序清单:classArea

{

floatgetArea(floatr)

{

System.out.print("方法一:");

return3.14f*r*r;

}

doublegetArea(floatx,inty)

{

System.out.print("方法二:");

returnx*y;

}

floatgetArea(intx,floaty)

{

System.out.print("方法三:");

returnx*y;

}

doublegetArea(floatx,floaty,floatz)

{

System.out.print("方法四:");

return(x+x+y*y+z*z)*2.0;

}

}

第二部分:参考答案一、选择题答案与解析1.答案:B解析:面向对象编程的三大特征是:封装性、继承性、多态性。健壮性是程序质量特征,不是面向对象的特征。2.答案:D解析:类的定义前面不能加void返回类型。class前面可以加public、final、abstract等修饰符,但不能加void。3.答案:A解析:构造方法可以重载(多个构造方法,参数不同)。B、C、D都是构造方法的正确特征。4.答案:D解析:this关键字的作用:1)this(...)调用本类其他构造方法;2)this.成员变量表示当前对象的成员;3)this.方法()调用本类成员方法。5.答案:B解析:构造方法在使用new创建对象时自动调用,用于初始化对象的成员变量。6.答案:A解析:构造方法不能有返回类型,连void都不行。publicvoidMyClass(...)错误,应该是publicMyClass(...)。7.答案:D解析:静态方法属于类,不需要创建实例,可以直接用类名调用,也可以用对象名调用(不推荐)。D说法错误。8.答案:A解析:静态方法只能访问静态成员(static变量和static方法),不能访问实例成员;实例方法既可以访问静态成员也可以访问实例成员。9.答案:D解析:静态方法可以用对象名访问(虽然不推荐),也可以用类名访问。静态块在类加载时执行一次,static方法中不能用this。10.答案:D解析:staticintz=2;错误,方法内部的局部变量不能用static修饰。static只能修饰类成员,不能修饰局部变量。二、问答题参考答案1.类是对象的模板,对象是类的实例。解答:类是抽象的概念,描述一类对象的共同属性和行为;对象是具体的实体,拥有类定义的属性和方法。

例如:学生是一个类,描述所有学生的共同属性(姓名、学号、年龄)和行为(学习、考试);张三是学生类的一个具体对象,有具体的姓名、学号值。

一个类可以创建多个对象,每个对象有独立的内存空间。2.构造方法特殊性:与类同名、无返回值、new时自动调用。解答:构造方法与一般成员方法的区别:

1)**名称**:构造方法名必须与类名完全相同;成员方法名可以任意。

2)**返回值**:构造方法没有返回类型(连void都不能写);成员方法必须有返回类型。

3)**调用时机**:构造方法在创建对象(new)时自动调用,只调用一次;成员方法需要对象显式调用,可多次调用。

4)**作用**:构造方法用于初始化对象成员变量;成员方法用于实现特定功能。

5)**重载**:都可以重载,但构造方法重载是提供不同初始化方式。3.类成员(static)属于类,实例成员属于对象。解答:**类变量(static变量)vs实例变量**:

-类变量:用static修饰,所有对象共享一份内存,通过类名访问

-实例变量:无static,每个对象有独立副本,通过对象访问

**类方法(static方法)vs实例方法**:

-类方法:用static修饰,属于类,只能访问静态成员,无this

-实例方法:无static,属于对象,可访问所有成员,有this

**举例**:

4.子类继承非private成员;重写要求方法签名完全相同。解答:**继承内容**:子类继承父类所有非private的成员变量和方法(public、protected、默认访问权限)。

**隐藏/覆盖**:

-成员变量:子类定义同名变量会隐藏父类变量(不推荐)

-成员方法:子类定义**方法签名完全相同**的方法会重写(Override)父类方法

**方法重写要求**:

方法名、参数列表必须完全相同,返回类型必须兼容(可以是子类型)。

如果只是名字和参数相同但返回类型不同,不是重写,是编译错误!因为JVM无法仅通过返回类型区分方法调用。三、编程题参考答案第1题参考答案程序代码://矩形类

classRectangle{

doublelength;//长

doublewidth;//宽

//计算周长

doublegetPerimeter(){

return2*(length+width);

}

//计算面积

doublegetArea(){

returnlength*width;

}

}

//主类

publicclassRectangleTest{

publicstaticvoidmain(String[]args){

Rectanglerect=newRectangle();

rect.length=10;

rect.width=5;

System.out.println("矩形长:"+rect.length);

System.out.println("矩形宽:"+rect.width);

System.out.println("矩形周长:"+rect.getPerimeter());

System.out.println("矩形面积:"+rect.getArea());

}

}运行结果:矩形长:10.0矩形宽:5.0矩形周长:30.0矩形面积:50.0第2题参考答案程序代码:classStudent{

Stringname;

intage;

doubleheight;

doubleweight;

//构造方法

publicStudent(Stringname,doubleheight,doubleweight){

=name;

this.height=height;

this.weight=weight;

}

//设置年龄

voidsetAge(intage){

this.age=age;

}

//显示信息

voidshowInfo(){

System.out.println("姓名:"+name);

System.out.println("年龄:"+age+"岁");

System.out.println("身高:"+height+"cm");

System.out.println("体重:"+weight+"kg");

}

}

publicclassStudentTest{

publicstaticvoidmain(String[]args){

Studentstu=newStudent("张三",175.5,65.0);

stu.setAge(20);

stu.showInfo();

}

}运行结果:姓名:张三年龄:20岁身高:175.5cm体重:65.0kg第3题参考答案AreaTest程序代码:publicclassAreaTest{

publicstaticvoidmain(String[]args){

Areaarea=newArea();

//根据参数类型自动匹配调用的方法

System.out.println(area.getArea(5.0f));//调用方法一

System.out.println(area.get

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论