类继承与接口(二)实验报告_第1页
类继承与接口(二)实验报告_第2页
类继承与接口(二)实验报告_第3页
类继承与接口(二)实验报告_第4页
类继承与接口(二)实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验十 类继承与接口(二) 课程名称: 面向对象程序设计实验 实验项目名称: 实验十 类继承与接口 (二) 学生姓名: 专业: 学号: 实验地点: 实验日期: 年 月 【实验目的】1掌握Java类的继承特点,包括子类声明、对象创建、成员变量的继承与隐藏、成员方法的继承与重写【实验内容】10-1程序阅读分析题。要求(1)有一个abstract类,类名为Employee。Employee的子类有YearWorker,MonthWorker和WeekWorker。YearWorker对象按年领取薪水,MonthWorker按月领取薪水,WeekWorker按周领取薪水。Employee类有一个abs

2、tract方法,子类必须重写父类的earings()方法,给出各自领取报酬的具体方式。(2)有一个Company类,该类用employee数组作为成员,employee数组的单元可以是YearWorker对象的上转型对象,MonthWorker对象 的上转型对象或者WeekWorker对象的上转型对象。源程序:(请将源程序中补充的空缺代码处以下划线加粗显示):abstract class Employeepublic abstract double earnings();class YearWorker extends Employee/重写earnings()方法代码1:class Mont

3、hWorker extends Employee/重写earnings()方法代码2:class WeekWorker extends Employee /重写earnings()方法代码3:class CompanyEmployee employee;double salaries=0;Company(Employee employee)this.employee=employee;public double salariesPay()salaries=0;/计算salaries代码4:return salaries;public class HardWorkpublic static vo

4、id main(String args)Employee employee=new Employee20;for(int i=0;iemployee.length;i+)if(i%3=0)employeei=new WeekWorker();else if(i%3=1)employeei=new MonthWorker();else if(i%3=2)employeei=new YearWorker();Company company=new Company(employee);System.out.println(公司年工资总额:+company.salariesPay();代码:abstr

5、act class Employeepublic abstract double earnings();class YearWorker extends Employee/重写earnings()方法 public double earnings() return 80000.0; class MonthWorker extends Employee public double earnings() return 60000.0; class WeekWorker extends Employee public double earnings() return 40000.0; class C

6、ompanyEmployee employee;double salaries=0;Company(Employee employee)this.employee=employee;public double salariesPay()salaries=0;for(int i = 0;i employee.length; i+)salaries = salaries + employeei.earnings(); return salaries;public class HardWorkpublic static void main(String args)Employee employee=

7、new Employee20;for(int i=0;iemployee.length;i+)if(i%3=0)employeei=new WeekWorker();else if(i%3=1)employeei=new MonthWorker();else if(i%3=2)employeei=new YearWorker();Company company=new Company(employee);System.out.println(公司年工资总额:+company.salariesPay();10-2.检查下面代码是否有错,如果有错,写明错误原因,并修正错误。1. class Aaa

8、 int i; Aaa()i=-1; Aaa(int a) i = a; Aaa(double d)Aaa(int)d);是否出错:是。出错原因(如果出错):构造器里不能调用构造器。改为Aaa(double d)i = (int) d;2. class Aaa int i; Aaa()i=-1; Aaa(int a) i = a; Aaa(double a)int b=(int)a;this(b); 是否出错:错出错原因(如果出错):this(参数)只能为第一句。改为Aaa(double a) this(int)a);3. class Aaa int i;Aaa(int a) i = a;cl

9、ass Bbb extends Aaa Bbb() 是否出错: 错, 出错原因(如果出错):Bbb() 中没有调用Aaa中的构造器,改为Bbb()super(10);4. class Aaa private int i; protected int j;class Bbb extends Aaa Bbb() i = 10; j = 99; 是否出错:错出错原因(如果出错):Bbb的直接超类Aaa中的实例变量i权限为private,在Bbb中不可继承,将int i;的权限改为至少为protected。5. 编译下面程序,程序是否出错class A int i =100;class B exten

10、ds A int i =10000;public static void main(String args)System.out.println(this.i);System.out.println(super.i);a) 是否出错:是b) 出错原因(如果出错):(2)如果将上述类B的int i =10000改为static int i =10000;类A的int i =100改为static int i =100;程序是否出错?出错原因(如果出错):出错。不能在静态上下文中引用this和super。(3)如果将类B的main方法改为public static void main(String

11、 args) B b =new B();System.out.println(b.i); System.out.println(A)b.i); 程序是否出错? 出错原因(如果出错):出错。(A)b.i错误,应该为A.i,并将类A的int i =100改为static int i =100;如果没出错, 给出结果:上面的System.out.println(b.i)的含义: System.out.println(A)b.i) 的含义: 6. class Aaa int i; public void Aaa(int a) i=a; public static void main(String ar

12、gs) Aaa a = new Aaa(10); 是否出错:是出错原因(如果出错):public void Aaa(int a) i=a;应为构造器,不是方法,改为public Aaa(int a) i=a;7.class Aaa public static void main(String args)int a=new int5; for( int i=0;ia.length;i+) for(int j=0;iai.length;j+) aij= (int)(100*Math.random(); System.out.println(aij); 是否出错:是出错原因(如果出错):int a=

13、new int5;中没有列数量,改为int a=new int55;而且for(int j=0;iai.length;j+)中iai.length;应为j ai.length8.class A int abc(int i)return 1; /方法1 int abc(int j)return 2; /方法2 int abc(int i,int j)return 3; /方法3 void abc(int i) /方法4是否有错: 是。上面类A中定义的四个方法是否都是方法的重载,有没有重复定义的方法,如果有,那么哪几个方法是重复定义的?不是,有重复定义的方法,方法1,2,4为方法重复定义。9. class A void show() System.out.println(A类的show(); class B extends A int show() System.out.println(B类的show(); public static void main(String args) B b = ne

温馨提示

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

评论

0/150

提交评论