当前位置:
文档之家› Java程序设计案例教程(第二版)周怡、张英主编。第6章 习题答案
Java程序设计案例教程(第二版)周怡、张英主编。第6章 习题答案
return "0";
方法的覆盖:在子类中重定义父类的同名方法。方法覆盖表现为父类与子类之间的方法的多态性,其中形参表、返回值类型也必须相同,且子类方法不能有比父类方法更严格的访问权限。可以为编译时多态性或运行时多态性。
6.什么叫构造方法?构造方法的作用是什么?
答:构造方法是对象实例化时完成对象及其成员变量的初始化时所调用的一种特殊的方法。
}
}
//类Draw_Clean继承抽象类Draw_Eraser并覆盖抽象方法getEraser()
classDraw_CleanextendsDraw_Eraser
{
publicvoidgetEraser()
{
System.out.println("橡皮擦选项:选择橡皮擦>>>选中需要清除内容>>>确定");
运行时多态性:在编译时不能确定、只有在运行时才能确定执行多个同名方法的哪一个。
五、编程题
1.考虑设计一个绘图工具的面向对象描述,写出代码框架,充分应用抽象、多态等方法。
classDraw_Graph
{
doubleline;
doublecircle;
//定义构造方法
publicDraw_Graph()
* @return计算结果
*/
public Complex multiply(Complex complex){
double x = this.x * complex.x - this.y * complex.y;
double y = this.y * complex.x + this.x * complex.y;
return new Complex(x,y);
}
/**复数与实数的减法
* @param a减数
* @return计算结果
*/
public Complex subtract(double a){
return subtract(new Complex(a,0));
}
/**复数间乘法
* @param complex乘数
if(x != 0){
sb.append(x);
if(y > 0){
sb.append("+" + y + "i");
}else if(y < 0){
sb.append(y + "i");
}
}else{
if(y != 0){
sb.append(y + "i");
}
}
if(x == 0 && y == 0){
class Complex {
private double x;//实部
private double y;//虚部
public Complex(){}
/**构造函数
* @param x实数部分
* @param y虚数部分
*/
public Complex(double x,double y){
super();
9.Java语言的多态性的实现主要有(B)两种方式。
A.设计时和运行时B.编译时和运行时
C.设计时和编译时D.编译时和存储时
三、填空题
1.面向对象程序设计方法最重要的特性是继承性、封装性和多态性。
2.构造方法是一个特殊的方法,是为对象初始化操作编写的方法,用它来定义对象的初始状态。
3.为了不允许其他子类继承,简单数据类型的包装类都被声明为final。
g.getCircle(3);
//创建并实例化类Draw_Clean对象c
Draw_Clean c=newDraw_Clean();
//调用类Draw_Clean方法get.Eraser()
c.getEraser();
}
}
2.编写一个复数类,具有实部、虚部成员变量,可以完成加、减、乘、获得实部和虚部等方法,并编写一个主类对其进行测试。
A.1 B.2 C.3 D.任意
7.下面有关接口的说法,正确的是(D)。
A.接口与抽象类是相同的概念
B.实现一个接口必须实现接口的所有方法
C.接口之间不能有继承关系
D.一个类可以实现多个接口
8.Java语言的多态现象,主要表现在(A)两个方面。
A.方法重载和成员覆盖B.方法重载和抽象对象
C.抽象对象和成员覆盖D.创建接口和方法继承
A.interface a{ B. interface a{
int I;int I=I;
void g(){}} void g(){}}
C.interface a{ D. interface a{
int I; int I=5;
protected void g();} void g();}
6.一个类可以同时继承或实现(D)个接口。
5.Math类是final类,因此在被其他类继承时其中的方法不能被重写。(×)
二、选择题
1.下列说法中,正确的是(A)。
A.类是变量和方法的集合体B.数组是无序数据的集合
C.抽象类可以实例化D.类成员数据必须是共有的
2.下面对形参的说法中,正确的是(C)。
A.必须有多个B.至少有一个
C.可以没有D.只能是简单变量
}
//实例方法重载,获取圆的半径
publicvoidgetCircle(doubleR)
{
System.out.println("作一半径为"+R+"的圆:选择圆心位置>>>确定");
}
}
//定义抽象类
abstractclassDraw_Eraser
{
publicvoidgetEraser()
{
System.out.println("选择橡皮擦");
this.x = x;
this.y = y;
}
/**求模
* @return该复数的模
*/
public double mod(){
return x * x + y * y;
}
/**复数间加法
* @param complex加数
* @return计算结果
*/
public Complex add(Complex complex){
二、类中既要提供与外部联系的方法,同时又要尽可能隐藏类的实现细节和保护自身数据的安全性。
5.什么是继承?什么是多态?方法的重载和覆盖有什么区别?
答:继承:由已有的类创建新类,从而自动实现类中方法和数据共享。
多态:同一名字的方法可以有多种实现,具有完全不同的执行效果或呈现出不同的执行结果状态。
方法的重载:在同一个类中,相同的方法名对应着不同的方法体,方法的参数也不相同。方法重载表现为同一个类中方法的多态性,一个类中可以定义多个参数不同的同名方法,属于编译时多态性。
(3)最后再将类实例化得到了现实世界中的实体在计算机世界中的映射——对象。
2.什么是类?什么是对象?他们之间的关系是怎样的?
答:类是一种复杂的数据类型,不仅包含数据,还包含对数据进行操作的方法;
对象是显示世界中事物的抽象表示。
类是具有相同或相似性质的对象的抽象。
3.Java设置了几种类成员的访问权限?各表示什么含义?
习题6
一、判断题
1.父类的引用变量可以指向它的子类的对象。(√)
2.Java语言中从一个父类可以派生出多个子类,一个子类可以有多个父类。(×)
3.在构造方法中如调用super(),则必须使其为该构造方法的第一句。(√)
4.Java语言中的接口可以继承,一个接口通过关键字extends可以继承另一个接口,一个Java的类可以通过关键字implements实现多个接口。(√)
double x = this.x + complex.x;
double y = this.y + complex.y;
return new Complex(x,y);
}
/**复数与实数的加法
* @param a加数
* @return计算结果
*/
public Complex add(double a){
}
}
publicclass习题6_五_1
{
publicstaticvoidmain(String[] args)
{
//创建并实例化类Draw_Graph对象g
Draw_Graph g=newDraw_Graph(4,3);
//调用类Draw_Graph方法getLine()、getCircle()
g.getLine(4);
return new Complex(x,y);
}
/**复数间除法
* @param complex除数
* @return计算结果
*/
public Complex divide(Complex complex){
double x = (this.x * complex.x + this.y * complex.y) / (complex.mod());
9.什么是接口?接口与抽象类有什么区别?
答:接口是一种特殊的数据类型(引用数据类型),主要用于描述某一行为功能所包含的行为方法的基本概况,即方法的名称、返回值类型以及形参表等,是一组常量和抽象方法的集合。
10.什么是编译时多态性?什么是运行时多态性?
答:编译时多态性:多个同名方法在编译时能够确定执行的是哪一个。
4.在Java方法体内中指向当前对象的引用是this,指向父类对象的引用是super。