77范文网 - 专业文章范例文档资料分享平台

Java程序设计各章习题及其答案(4)

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

}

void speak(String s) //有参数的speak方法 {

System.out.println(″I like″+″″+s+″. ″); }

}

public class OverLoadingDemo {

public static void main (String args[ ]) {

Father x = new Father( );

x.speak(); //调用无参的speak方法 x.speak(″music″) //调用有参的speak方法 } }

运行结果: I am Father! I like music.

第五章 习题及思考题

1、 什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来 什么好处?什么是单重继承?什么是多重继承?

解:继承是面向对象程序设计中两个类之间的一种关系。当一个类获取另一个类中 所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具 有继承关系。被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称 为子类。

面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量。 如果一个类只能有一个父类,则这种继承关系称为单重继承;如果一个类可以有多个 父类,则这种继承关系称为多重继承。

2、 “子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否 正确?为什么?

解:这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能继承所 有非私有的域和方法。如果子类在继承之外自己定义的域和方法数目小于父类中私有成 员的数目,则子类的域和方法的数目小于父类的域和方法的数目。

3、什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同?

解;子类重新定义父类中已经存在的方法,称为方法的覆盖。注意:方法覆盖与域的 隐藏不同。子类重新定义父类已有的域,并不能完全取代它从父类那里继承的同名的域,

这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法 时,从父类那里继承来的方法将被新方法完全取代,不再在子类的内存空间中占一席

之地。 与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。

4、 什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点?

解:一个类中存在多个同名的方法,称为多态。把抽象功能和目的相同,而具体实现 因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、 隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦 合和依赖。

5、 父类对象与子类对象相互转化的条件是什么?如何实现它们的相互转化?

解:一个子类对象也可以被合法地视为一个父类的对象,即一个父类对象的引用,其 指向的内存单元可能实际上是一个子类的对象。在这种情况下,可以使用强制类型转换, 将父类对象的引用转换成实际的子类对象的引用

6、什么是包?它的作用是什么?

解:包是一种松散的类的集合。包的作用主要是把需要协同工作的不同的类组织在 一起,使得程序功能清楚、结构分明。

7、 CLASSPATH是有关什么的环境变量?它如何影响程序的运行?如何设置 和修改这个环境变量?

解:CLASSPATH是指定缺省的包文件(字节码文件)路径的环境变量。如果

CLASSPATH设置得不正确,则程序编译、运行时可能找不到所需的类的字节码文件,从 而使程序无法正常运行。

使用如下命令设置或修改CLASSPATH: SET classpath=,;d:\\jdk1.5.0\\lib\\ext

8、 一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象 方法?

解:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽 象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以 不必实现该接口中的所有抽象方法。

9、 为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A、B、C的表达式。现有两种工具:Car007 和Plane,其中Car007 的速度运算公式为:A*B/C,Plane 的速度运算公式为:A+B+C。需要编写三类:ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未来如果增加第3种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序。其运行过程如下,从命令行输入ComputeTime的四个参数,第一个是交通工具的类型,第二、三、四个参数分别时整数A、B、C,举例如下:

计算Plane的时间:\ 计算Car007的时间:\ 如果第3种交通工具为Ship,则只需要编写Ship.java,运行时输入:\ComputeTime Ship 22 33 44\

提示:充分利用接口的概念,接口对象充当参数。

实例化一个对象的另外一种办法:Class.forName(str).newInstance();例如需要实

例化一个Plane对象的话,则只要调用Class.forName(\便可。 解:ComputerTime.java 源程序: import pkg1.pkg2.*; import java.lang.*;

public class ComputerTime

{ public static void main(String args[])

{ System.out.println(\交通工具: \ System.out.println(\参数A: \ System.out.println(\参数B: \ System.out.println(\参数C: \ double A=Double.parseDouble(args[1]); double B=Double.parseDouble(args[2]); double C=Double.parseDouble(args[3]); double v,t; try { Common d=(Common) Class.forName(\ v=d.runtimer(A,B,C); t=1000/v;

System.out.println(\平均速度: \ System.out.println(\运行时间:\小时\ }

catch(Exception e)

{ System.out.println(\ } } }

包pkg1中Car007.java的源程序: package pkg1;

import pkg1.pkg2.*;

public class Car007 implements Common

{ public double runtimer(double A,double B,double C) { System.out.println(\ return A*B/C; } }

包pkg1中Plane.java的源程序: package pkg1;

import pkg1.pkg2.*;

public class Plane implements Common {

public double runtimer(double A,double B,double C) {

return A+B+C; } }

包pkg2中Common.java的源程序: package pkg1.pkg2;

public interface Common

{ double runtimer(double A,double B,double C); }

10、编写求解几何图形(如直线、三角形,矩型,圆,多边型)的周长,面积的应用程序,要求用到继承和接口等技术。

解:// Solution of drawings as triangle,rectangle,circle

import java.io.*; // interface

interface getProperty {

double Pi=3.1415926; double getArea(); double getCircum(); String getName(); } //

class mpoint {

static int i=0; double x,y;

String strmpoint;

mpoint(double a,double b) {

this.x=a; this.y=b; }

double getX(){ return x; }

double getY() {

return y; }

String getString()

{

i+=1;

strmpoint=\ return strmpoint; } }

//disp class class disp { double area; double circum;

String drawingName;

disp(double a, double b, String ss){ this.area=a; this.circum=b;

this.drawingName=ss; }

public void display(){

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

// class triangle

class triangle implements getProperty { mpoint p1,p2,p3; double s1,s2,s3;

String drawingName=\

triangle(mpoint p1,mpoint p2,mpoint p3){ this.p1=p1; this.p2=p2; this.p3=p3;

this.s1=Math.sqrt( (p1.x-p2.x)*(p1.x-p2.x)+ (p1.y-p2.y)*(p1.y-p2.y) ); this.s2=Math.sqrt( (p3.x-p2.x)*(p3.x-p2.x)+ (p3.y-p2.y)*(p3.y-p2.y) ); this.s3=Math.sqrt( (p1.x-p3.x)*(p1.x-p3.x)+ (p1.y-p3.y)*(p1.y-p3.y) ); }

public double getArea(){ double ss,ssa;

ss=(s1+s2+s3)*Pi/2.0/Pi;

ssa=Math.sqrt( ss*(ss-s1)*(ss-s2)*(ss-s3) ); return ssa; }

public double getCircum(){

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java程序设计各章习题及其答案(4)在线全文阅读。

Java程序设计各章习题及其答案(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/448938.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: