JAVA第06周实验包接口与抽象类Word文件下载.docx
《JAVA第06周实验包接口与抽象类Word文件下载.docx》由会员分享,可在线阅读,更多相关《JAVA第06周实验包接口与抽象类Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。
![JAVA第06周实验包接口与抽象类Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/5d3dc635-0fa6-4256-b054-4a1b6dda463a/5d3dc635-0fa6-4256-b054-4a1b6dda463a1.gif)
要求:
将上述程序分别保存并调试,写下运行结果和编译结果。
调试过程:
1)保存文件C2.java(注意:
在一个java源程序中只能有一条包语句)
2)编译:
javac–d.C2.java
3)运行:
javaP1.C2
2、//源程序2
packageP2;
classC3{}
将上述程序分别保存并调试,写下运行结果和编译结果
1)保存文件C3.java
javac–d.C3.java
javaP2.C3
3、将下述源程序保存并编译,观察并写下编译结果。
publicclassC4{}
4、将下述源程序保存并编译,观察并写下编译结果。
packageP1.pp1;
publicclassC5{}
____________________________________________________________________________________
【实验结果与分析】
1.
2,
3.
4.
____________________________________________________________________________
【实验目的】---抽象类与接口
◆理解掌握Java抽象类的继承与接口的实现
————————————————————————————————————————
二、抽象类与接口
1、运行程序,写下程序运行结果,理解抽象类的使用。
abstractclassAnimal
{
publicabstractvoidcry();
}
classDogextendsAnimal
{
publicvoidcry()
{System.out.println("
汪汪....."
}
}
publicclassTestDemo
{publicstaticvoidmain(Stringargs[])
{Animala;
a=newDog();
a.cry();
2、将抽象类Animal写成接口,并定义Dog类实现该结果,写成程序并给出运行结果
————————————————————————————————————————————————
1、
2、
interfaceAnimal
voidcry();
classDogimplementsAnimal
{Doga=newDog();
_______________________________________________________________________________
3、按照下面的要求,完成程序并给出程序的运行结果
定义接口:
InterfaceShape
{
floatPI=3.1415926;
voiddraw();
//绘制图形,在程序中用信息输出表示,如,绘制一个圆
doublegetArea();
//获取面积
doublegetCircumference()//周长
(1)分别定以下类(每个类必须继承接口Shape):
圆(Circle)
椭圆(Eclipse)
矩形(Rectangle)
三角形(Triangle)
(2)每个类的定义:
1)定义相应成员变量;
2)实现接口中定义的方法;
3)定义带参构造方法;
4)在程序中定义类TestShape,并在main方法中完成对各类的测试
________________________________________________________________________________
编写程序并给出运行结果:
interfaceShape
floatPI=3.1415926f;
//绘制图形,在程序中用信息输出表示,如,绘制一个圆
//获取面积
doublegetCircumference();
//周长
classCircleimplementsShape//圆
doubler;
publicCircle(doubler)
this.r=r;
publicvoiddraw()
System.out.println("
绘制一个半径为"
+r+"
的圆"
publicdoublegetArea()
returnPI*r*r;
publicdoublegetCircumference()
return2*PI*r;
classEclipseimplementsShape//椭圆
doublea,b;
publicEclipse(doublea,doubleb)
this.a=a;
this.b=b;
publicvoiddraw()
绘制一个长半轴为:
"
+a+"
\t短半轴为:
+b+"
的椭圆"
publicdoublegetArea()
returnPI*a*b;
publicdoublegetCircumference()
return2*PI*b+4*(a-b);
classRectangleimplementsShape//矩形
publicRectangle(doublea,doubleb)
绘制一个长为"
\t宽为:
的矩形"
returna*b;
return2*(a+b);
classTriangleimplementsShape//三角形
doublea,b,c;
publicTriangle(doublea,doubleb,doublec)
this.c=c;
绘制一个三边长分别为:
"
+c+"
的三角形"
doublel=(a+b+c)/2;
returnjava.lang.StrictMath.pow(l*(l-a)*(l-b)*(l-c),1.0/2);
returna+b+c;
publicclassTestShape
publicstaticvoidmain(String[]args)
Circlea=newCircle(3);
a.draw();
System.out.print("
面积Area="
+a.getArea()+"
周长Circumference="
+a.getCircumference());
Eclipseb=newEclipse(4,3);
b.draw();
+b.getArea()+"
+b.getCircumference());
Rectanglec=newRectangle(3.2,4.5);
c.draw();
+c.getArea()+"
+c.getCircumference());
Triangled=newTriangle(3,4,5);
d.draw();
+d.getArea()+"
+d.getCircumference());
4、按照下面的要求,完成程序并给出程序的运行结果
假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:
(1)经理(Manager)——每月获得一份固定的工资
(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。
(3)一般工人(Worker)——则按他每月工作的天数计算工资。
根据上述要求试用类的继承和相关机制描述这些功能,并编写一个JavaApplication程序,演示这些类的用法。
(提示:
应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary(),使得可以通过这个类计算所有雇员的工资。
经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。
)
//Employee类的定义如下
abstractclassEmployee{
privateStringname;
publicEmployee(Stringname){
this.name=name;
publicStringgetName(){
returnname;
publicabstractdoublecomputeSalary();
_______________________________________________________________________________________________
编写程序并给出运行结果
importjava.util.Arrays;
importjava.util.Scanner;
abstractclassEmployee
classManagerextendsEmployee
staticprivatedoubleregularwages;
publicManager(Stringname,doubleregularwages)
super(name);
this.regularwages=regularwages;
publicdoublecomputeSalary()
returnregularwages;
classSalesmanextendsEmployee
staticprivateintsaleNumber;
staticprivatedoubleEveryBonus;
publicSalesman(Stringname,doubleregularwages,intsaleNumber,doubleEveryBonus)
this.saleNumber=saleNumber;
this.EveryBonus=EveryBonus;
returnregularwages+saleNumber*EveryBonus;
classWorkerextendsEmployee
staticprivateintworkdays;
staticprivatedoubledaysBonus;
publicWorker(Stringname,intworkdays,doubledaysBonus)
this.workdays=workdays;
this.daysBonus=daysBonus;
returnworkdays*daysBonus;
publicclassWagesCompute
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
欢迎进入本公司员工工资支付计算系统:
经理的工资(固定):
//经理工资
Managera=newManager("
王阳"
50000);
System.out.println(a.getName()+"
的月工资为:
+puteSalary());
销售人员的月工资:
//销售人员工资
请输入销售人员的姓名:
Stringsalesname=input.next();
请输入销售人员的每月固定工资:
doubleregualwages=input.nextInt();
请输入销售人员的月销售量:
intsaleNumber=input.nextInt();
请输入销售人员的每份销售提成:
doubleEveryBonus=input.nextInt();
Salesmanb=newSalesman(salesname,regualwages,saleNumber,EveryBonus);
System.out.println(b.getName()+"
一般员工的月工资:
//一般员工工资
请输入一般员工的姓名:
Stringworkname=input.next();
请输入一般人员的月工作天数:
intworkdays=input.nextInt();
请输入一般人员的每天工资:
doubledaysBonus=input.nextInt();
Workerc=newWorker(workname,workdays,daysBonus);
System.out.println(c.getName()+"
---------------------------------------------------实验作业上交说明
1、按照上面题目要求,完成实验,程序必须上机验证,如果程序没有正确运行结果,将记录“实验未完成”——将严重影响期末成绩。
2、实验文档要规范并且要编辑排版,先用WORD文档编辑,然后转换出PDF文档,文件名必须按照下面格式命名:
第*周实验+姓名+学号。
3、每周的实验文档,原则上周二上交(最迟在每周三晚8点前,过期按实验作业缺席处理)
4、上交实验文档方式:
Email至:
swjtujava@
5、发送Email时,Email主题必须是:
第*周实验+姓名+学号,否则不予处理