解析java程序设计第四章课后答案_第1页
解析java程序设计第四章课后答案_第2页
解析java程序设计第四章课后答案_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、第 4 章习题解答1类的继承的主要好处是什么? Java 中支持类的多继承形式吗? 继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个拥有共有属性的一般 类,根据该一般类再创建具有特殊属性的新类,新类自动拥有一般类的属性和行为,并根据需要 可以增加新的属性和行为,或者改变父类的行为。类的继承的主要好处是代码复用。Java 不支持类的多继承形式。2解释一下方法重载和方法覆盖的概念,并对两者加以对比。如果子类中定义方法所用的名称、返回类型和参数表和父类中方法所使用的完全一样,但具体实 现不同,则称子类方法覆盖了父类中的方法。在同一类中,如果方法名称相同,但参数表不同,则称为方法重载。

2、3编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、班号和成绩,教师数 据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类Person ,并作为学生类 Student 和教师类 Teacher 的父类。import java.util.*;class Personprivate String name;private int id;public void input()Scanner sc=new Scanner(System.in);name=sc.nextLine();id=sc.nextInt();public void display()System.out

3、.println("class Student extends Personprivate int classNo;private int score;public void input()super.input();Scanner sc=new Scanner(System.in);classNo=sc.nextInt();score=sc.nextInt();public void display()super.display();System.out.println("classNo="+classNo+" score="+score);

4、public static void main(String args)Student s=new Student();s.input();s.display();Animal4创建 Animal (动物) :Mouse,Dog 等的一个继承分级结构。在父类中,提供适用于所有 的方法,并在子类中覆盖它们,从而根据不同类型的 Animal 采取不同的行动。 abstract class Animalpublic abstract void speak();class Mouse extends Animalpublic void speak()System.out.println("m

5、iao");class Dog extends Animalpublic void speak()System.out.println("wang");public class Examplepublic static void main(String args)Mouse m=new Mouse();m.speak();Dog d=new Dog();d.speak();5. 解释 super 关键字的不同用法。 调用超类的构造方法。引用超类的成员变量及方法。6阅读以下程序,给出运行结果。class SuperClassint x;SuperClass()x=3

6、;System.out.println("in SuperClass : x=" +x);void doSomething() System.out.println("in SuperClass.doSomething()");class SubClass extends SuperClassint x;SubClass()super();x=5;System.out.println("in SubClass :x="+x);void doSomething()super.doSomething();System.out.printl

7、n("in SubClass.doSomething()");System.out.println("super.x="+super.x+" sub.x="+x);public class Inheritancepublic static void main(String args)SubClass subC=new SubClass();subC.doSomething();运行结果in SuperClass : x=3 in SubClass :x=5in SuperClass.doSomething()in SubClass.d

8、oSomething()super.x=3 sub.x=57介绍抽象类和抽象方法的概念,一个抽象类的所有方法是否都必须为抽象方法?有时在类库开发中,要创建一个体现某些基本行为的类,并为该类声明方法,但无法在该类中实 现全部具体行为,取而代之,在子类中具体实现该方法。面向对象程序设计中,利用抽象类 (abstract class) ,可以声明仅定义了部分实现的类,让该类 的子类提供某些或全部方法的具体实现。抽象类通常代表一个抽象概念,它提供一个继承的出发 点。一个抽象类的所有方法并非都必须为抽象方法。8 通过查看 Java API 文档,在 Java 类库中寻找 abstract 类和 abst

9、ract 方法的一些例子。例如: java.io 包中, Writer 类即为一个抽象类。9 定义一个 Shape 抽象类,在此基础上派生出 Rectangle 和 Circle 类,二者都有 GetArea() 方 法计算对象的面积, GetPerim() 方法计算对象的周长。使用 Rectangle 类派生一个新类 Square , 并编写测试程序加以测试。abstract class Shapeabstract double GetArea();abstract double GetPerim();class Rectangle extends Shapedouble w,h;Recta

10、ngle(double w,double h)this.w=w;this.h=h;double GetArea()return w*h;double GetPerim()return 2*(w+h);class Circle extends Shapedouble r;Circle(double r)this.r=r;double GetArea()return 2*3.1415*r*r;double GetPerim()return 2*3.1415*r;class Testpublic static void main(String args)Circle c=new Circle(3.5

11、);Rectangle r=new Rectangle(2.5,6);System.out.println(" 圆形的周长 ="+c.GetPerim()+" 面积 ="+c.GetArea();10. 在 Java 类库中寻找 final 类和 final 方法的一些例子。java.lang.String 类即为 final 类。11. 解释接口的概念, Java 中接口可以有多继承形式吗?Java 中,一个接口 (interface) 仅仅描述方法的特征 , 而不给出方法的具体实现;而类不仅给出 方法的特征,还给出方法的具体实现。因此,接口把方法的特

12、征和实现分离开,可以将接口看作 是代表某一个角色,而实现这个接口的类便是扮演这个角色的演员,一个角色可以由不同的演员 来演,而不同的演员之间除了扮演一个共同的角色外,并不要求有任何其它的共同之处。Java 中接口可以有多继承形式。12. 阅读以下程序,给出运行结果。interface ShowMessagevoid showTradeMark();class TV implements ShowMessagepublic void showTradeMark()System.out.println(" 我是电视机 ");class PC implements ShowMes

13、sagepublic void showTradeMark()System.out.println(" 我是电脑 ");public class Examplepublic static void main(String args)ShowMessage sm;sm=new TV();sm.showTradeMark();sm=new PC();sm.showTradeMark();运行结果如下:我是电视机我是电脑13编写一个实现 Comparable 接口类型的类 BankAccount 。根据递增的存款额排列银行中的账 号,并提供一个测试程序,对银行账号数组列表进行排序

14、。/BankAccount.java package exercise4_13;class BankAccountimplements Comparable<BankAccount>private String private floatbankId ; deposit ;BankAccount(String Id, float deposit)bankId = Id;this . deposit = deposit;public String toString()return " 账号: " + bankId + "t 存款: " + de

15、posit public int compareTo(BankAccount other)if ( deposit < other.deposit ) return -1;if ( deposit > other.deposit ) return 1;return 0;/Test.javapackage exercise4_13;import java.util.Arrays;public class Test * param args*/public static void main(String args) BankAccount b =new BankAccount3;b0

16、= new BankAccount( "001" ,30); b1 = new BankAccount( "002" ,50); b2 = new BankAccount( "003" ,40);Arrays. sort (b);for ( int i = 0;i < b.length ;i +)System. out .println(bi.toString();System. exit (0); 14为某单位编写一个程序,用来计算每一种交通工具运行1000 公里所需的时间。现有两种工具: Car007 和 Plane ,需要

17、编写三个类: ComputeTime.java,Plane.java,Car007.java 和接口 Vehicle.java ,要求在未来如果增加第 3 种交通工具的时候,不必修改以前的任何程序,只需要 编写新的交通工具的程序。各种交通工具对象的速度由各个交通工具类中相应的返回运行速度的 方法来获取。/Vehicle.javapackage exercise4_14;interface Vehicle int getVelocity();/Plane.javapackage exercise4_14;class Plane extends ComputeTime implements Veh

18、icle private int velocity ;Plane( int velocity)this . velocity = velocity;public int getVelocity() return velocity ;floatTime()return( float ) super .getDistance()/velocity ;/ComputeTime.java package exercise4_14;abstract class ComputeTime private intdista nee= 1000;intgetDista nce()retur ndista neeabstract float Time();Car007.javapackage exercise4_14;class Car007exte nds ComputeTime impleme nts Vehicleprivate int velocity ;Car007( int velocity)this . velocity = velocity;public int getVelocity()return velocity ;float Time()ret

温馨提示

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

评论

0/150

提交评论