实验-抽象类和接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验-抽象类和接⼝
学⽣实验报告
课程:实验指导教师:
系别:班级:
实验⽇期:年⽉⽇实验地点:
姓名:学号:
⼀、实验名称:抽象类和接⼝
实验概述:
【实验⽬的及要求】
1 ⼦类的继承性
2⼦类对象的创建过程
3成员变量的继承和隐藏
4⽅法的继承和重写
【实验环境】(使⽤的软件)
Eclipse
实验内容:
【实验过程】(实验步骤、记录、数据、分析)
实验内容:
⼀、有⼀个abstract类,类名为Employee。
Employee的⼦类有YearWorker,MonthWorker 和WeekWorker。
YearWorker对象按年领取薪⽔,MonthWorker对象按⽉领取薪⽔,WeekWorker对象按周领取薪⽔。
Employee类有⼀个抽象⽅法:
public abstract double earnings( );
⼦类必须重写⽗类的earnings⽅法,给出各⾃领取报酬的具体⽅式。
有⼀个Company类,该类⽤employee数组作为成员,employee数组的成员可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。
程序能够输出Company对象⼀年需要⽀付的薪⽔总额。
程序模板
按模板要求,将【代码1】~【代码4】替换为Java程序代码。
HardWork.java
abstract class Employee
{
public abstract double earnings( );
}
class YearWorker extends Employee
{
【代码1】// 重写earnings( )⽅法
}
class MonthWorker extends Employee
{
【代码2】// 重写earnings( )⽅法
}
class WeekWorker extends Employee
{
【代码3】// 重写earnings( )⽅法
}
class Company
{
Employee[ ] employee;
double salaries=0;
Company(Employee[ ] employee)
{
this.employee=employee;
}
public double salariesPay( )
{
salaries=0;
【代码4】// 计算salaries
return salaries;
}
}
public class HardWork
{
public static void main(String args[ ])
{
Employee[ ] employee=new Employee[20]; for(int i=0;i
{
if(i%3==0)
employee[i]=new WeekWorker( );
else if(i%3==1)
employee[i]=new MonthWorker( );
else if(i%3==2)
employee[i]=new YearWorker( );
}
Company company=new Company(employee);
System.out.println("公司年⼯资总额:"+company.salariesPay( ) );
}
}
问题:
1、⼦类YearWorker如果不重写⽗类的earnings( )⽅法,程序编译时会提⽰怎样的错误?
⼆、有⼀个ComputeTotalSales接⼝,该接⼝中有⼀个⽅法:
public double totalSalesByYear( );
有三个实现该接⼝的类:Television、Computer和Mobile。
这三个类通过实现接⼝ComputeTotalSales,给出⾃⼰的年销售额。
有⼀个shop类,该类⽤ComputeTotalSales数组作为成员,ComputeTotalSales数组的单元可以存放Television对象的引⽤、Computer对象的引⽤或Mobile对象的引⽤。
程序能输出shop对象的年销售额。
程序模板
按模板要求,将【代码1】~【代码4】替换为Java程序代码。
HappySale.java
interface ComputeTotalSales
{
public double totalSalesByYear( );
}
class Television implements ComputeTotalSales
{
【代码1】// 实现totalSalesByYear( )⽅法
}
class Computer implements ComputeTotalSales
{
【代码2】// 实现totalSalesByYear( )⽅法
}
class Mobile implements ComputeTotalSales
{
【代码3】// 实现totalSalesByYear( )⽅法
}
class Shop
{
ComputeTotalSales[ ] goods;
double totalSales=0;
Shop(ComputeTotalSales[ ] goods)
{
this.goods=goods;
}
public double giveTotalSales( )
{
totalSales=0;
【代码4】// 计算totalSales
return totalSales;
}
}
public class HappySale
{
public static void main(String args[ ])
{
ComputeTotalSales[ ] goods=new ComputeTotalSales[50];
for(int i=0;i
{
if(i%3==0)
goods[i]=new Television( );
else if(i%3==1)
goods[i]=new Computer( );
else if(i%3==2)
goods[i]=new Mobile( );
}
Shop shop=new Shop(goods);
System.out.println("商店年销售额:"+shop.giveTotalSales( ) );
}
}
问题:
1、类Mobile如果不实现totalSalesByYear( )⽅法,程序编译时会提⽰怎样的错误?⼼得体会
指导教师批阅成绩
指导教师签名:。