JAVA各章习题及答案 - 副本(2)

2019-01-07 19:33

double类型,求面积和周长的方法都应定义为double类型,在构造方法中对radius进行初始化。

【参考答案】

public class X4_3_1 {

public static void main(String[] args) { Circle c1 = new Circle(100); Circle c2 = new Circle(200);

System.out.println(\ System.out.println(\ } }

class Circle{ int radius; final static double PI=3.14; Circle(int r){ radius = r; } double area(){ return PI*radius*radius; } double perimeter(){ return 2*PI*radius; } }

【运行结果】

c1.area() = 31400.0 c1.perimenter() = 628.0 c2.area() = 125600.0 c2.perimenter() = 1256.0 2.编一个程序,程序中包含以下内容:

一个学生类(Student),包含:

属性:学号s_No,姓名s_Name,性别s_Sex,年龄s_Age。

方法:构造方法,显示学号方法showNo(),显示姓名方法showName(),显示性别方法showSex(),显示年龄方法showAge(),修改年龄方法modifyAge()。

主类(X4_3_2),包含: 主方法main(),在其中创建两个学生对象s1和s2并初始化,两个对象的属性自行确定,然后分别显示这两个学生的学号、姓名、性别、年龄,然后修改s1的年龄并显示修改后的结果。

【编程分析】按照要求首先编写Student类,其中的属性和方法根据实际情况选择相应的类型和权限修饰符,要通过方法来修改年龄,因此s_Age属性应该为private类型,否则可以直接在主类中进行修改,就没有必要使用方法了。 【参考答案】

public class X4_3_2 {

public static void main(String[] args) {

Student s1 = new Student(101,\张三\男\ Student s2 = new Student(102,\李四\女\

6

System.out.println(\第1个学生的信息为:\ s1.showNo(); s1.showName(); s1.showSex(); s1.showAge();

System.out.println(\第2个学生的信息为:\ s2.showNo(); s2.showName(); s2.showSex(); s2.showAge();

System.out.println(\修改第1个学生的年龄:\ s1.modifyAge(24);

System.out.println(\第1个学生的年龄修改为:\ s1.showAge(); } }

class Student{ private int s_No; private String s_Name; private String s_Sex; private int s_Age; Student(int no, String name, String sex, int age){ s_No = no; s_Name = name; s_Sex = sex; s_Age = age; } void showNo(){ System.out.println(\学号:\ } void showName(){ System.out.println(\姓名:\ } void showSex(){ System.out.println(\性别:\ } void showAge(){ System.out.println(\年龄:\ } void modifyAge(int newAge){ s_Age = newAge; } }

7

【运行结果】 第1个学生的信息为: 学号:101 姓名:张三 性别:男 年龄:18

第2个学生的信息为: 学号:102 姓名:李四 性别:女 年龄:16

修改第1个学生的年龄: 第1个学生的年龄修改为: 年龄:24

第5章

一、选择题

1.已知有下面类的说明:

public class X5_1_1 extends x{ private float f =10.6f; int i=16; static int si=10;

public static void main(String[] args) { X5_1_1 x=new X5_1_1(); } }

在main()方法中,下面哪条语句的用法是正确的?( A ) A.x.f B.this.si C.X5_1_1.i D.X5_1_1.f

【解析】由于x是在main方法内部定义的对象,因此它可以引用类的非static类型的属性,因此选A,而this和super不能在main方法中使用,使用类名只能引用本类的静态属性,因此B、C、D不对。

2.下列程序的运行结果是( C )。

public class X5_1_2 extends x{

int ab(){ static int aa=10; aa++; System.out.println(aa); }

public static void main(String[] args) { X5_1_2 x=new X5_1_2(); x.ab(); } }

A.10 B.11 C.编译错误 D.运行成功,但不输出 【解析】方法体内的局部变量不能使用static修饰符。 3.下面关于接口的说法中不正确的是( C )。 A.接口中所有的方法都是抽象的

8

B.接口中所有的方法都是public访问权限

C.子接口继承父接口所用的关键字是implements D.接口是Java中的特殊类,包含常量和抽象方法 【解析】子接口继承父接口所用的关键字也是extends,只有类实现接口时才使用implements。 4.区分类中重载方法的依据是( A )。 A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同 【解析】形参表的类型和顺序不同时区分重载方法的唯一标志。

5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?( B ) A.能,能 B.能,不能 C.不能,能 D.不能,不能 【解析】子类对象可以直接赋值给父类对象,而父类对象不能直接赋值给子类对象。 6.Java语言类间的继承关系是( A )。 A.单继承 B.多重继承 C.不能继承 D.不一定 【解析】Java语言类间的继承关系是单继承,但一个类可以实现多个接口。 7.Java语言接口间的继承关系是( B )。 A.单继承 B.多重继承 C.不能继承 D.不一定 【解析】Java语言接口间的继承关系允许多重继承。 8.一个类实现接口的情况是( A )。 A.一次可以实现多个接口 B.一次只能实现一个接口 C.不能实现接口 D.不一定 【解析】Java语言允许一个类一次实现多个接口。 9.定义外部类的类头时,不可用的关键字是( C )。 A.public B.final C.protected D.abstract 【解析】定义外部类时不能使用protected关键字。

10.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量?( B )

A.不能引用,必须改名,使它们的名称不相同 B.在成员变量前加this,使用this访问该成员变量 C.在成员变量前加super,使用super访问该成员变量 D.不影响,系统可以自己区分 【解析】this可以用来引用本类对象。 11.下面说法不正确的是( B )。

A.抽象类既可以做父类,也可以做子类 B.abstract和final能同时修饰一个类

C.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口 D.声明为final类型的方法不能在其子类中重新定义

【解析】abstract和final不能同时修饰一个类,因为abstract类需要子类,而final类不能有子类。

二、填空题

1.消息就是向对象发出 服务请求 ,是对 数据成员 和 成员方法 的引用。 2.在面向对象系统中,消息分为两类 公有消息 和 私有消息 。

3.在面向对象程序设计中,采用 继承 机制可以有效地组织程序结构。充分利用已有的类

来创建更复杂的类,大大提高程序开发的效率,提高代码的复用率,降低维护的工作量。 4. 数据成员的隐藏 是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的

9

数据成员。

5.子类可以重新定义与父类同名的成员方法,实现对父类方法的 覆盖 。 6.子类在重新定义父类已有的方法时,应保持与父类完全相同的 方法名 、 返回值类型 和

参数列表 ,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。 7.this代表了 当前对象 的一个引用,super表示的是当前对象的 直接父类对象 的引用。 8.抽象类不能 创建 对象,该工作由抽象类派生的非抽象子类来实现。

9.如果父类中已有同名的abstract方法,则子类中就 不能 (能/不能)再有同名的抽象

方法。

10.abstract类中不能有 private 访问权限的数据成员或成员方法。

11. interface 是声明接口的关键字,可以把它看成一个特殊类。接口中的数据成员默认的

修饰符是 public static final ,接口中的成员方法默认的修饰符是 public abstract 。 12.如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须 实现 该接口的

所有抽象方法;如果实现某接口的类是abstract的抽象类,则它可以 不实现 该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法以及自身所实现接口中的抽象方法都必须有实在的 方法体 。 13.包的作用有两个,一是 划分类名空间 ,二是 控制类之间的访问 。

14.封装也称 信息隐藏 ,是指类的设计者只为类的使用者提供类的可以访问的部分(包

括类的数据成员和成员方法),而把类中的其他成员 隐藏 起来,使用户不能访问的机制。

15.Java提供了4种访问权限来实现封装机制,即 private 、 protected 、 默认 和 public 。 16.Java中提供两种多态机制, 重载 与 覆盖 。

17.当一个构造方法需要调用另一个构造方法时,可以使用关键字 this ,同时这个调用语

句应该是整个构造方法的 第一条 可执行语句。

18.如果子类自己没有构造方法,那么父类也一定 没有 (有/没有)带参的构造方法,此

时它将继承父类的 无参构造方法 作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行 父类 的构造方法,然后再执行自己的 构造方法 。 19.对于父类的含参数构造方法,子类可以通过在自己的构造方法中使用 super 关键字来调用它,但这个调用语句必须是子类构造方法的 第一条 可执行语句。

20.创建一个名为myPachkage的包的语句为 package myPackage; ,该语句应该放在程序第一行 位置。 三、编程题

1.编写一个实现方法重载的程序。

【编程分析】重载的含义就是在一个类中定义多个具有相同方法名,不同参数列表的方法。在下面程序中的类中定义了三个同名方法area,分别用于求圆、矩形和三角形的面积。三个方法具有不同的参数。 【参考程序】

public class X5_3_1{ public double area(double radius){ return Math.PI*radius*radius; } public double area(double width, double height){ return width*height; } public double area(double a, double b, double c){

10


JAVA各章习题及答案 - 副本(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:终版---智悲组三戒论复习答案(整理版) (2)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: