JAVA第06周实验包接口与抽象类.docx
《JAVA第06周实验包接口与抽象类.docx》由会员分享,可在线阅读,更多相关《JAVA第06周实验包接口与抽象类.docx(16页珍藏版)》请在冰豆网上搜索。
JAVA第06周实验包接口与抽象类
实验内容
第06周实验接口内部类与包
成绩
姓名
陈佳宇
学号
20112730
班级
软件二班
专业
软件工程
日期
2014年4月1日
【实验目的】---包
◆理解掌握Java类的管理机制——包
__________________________________________________________________________________________________
1、//源程序1
packageP1;
classC1{}
publicclassC2{
publicstaticvoidmain(Stringargs[]){
System.out.println("察看编译结果");
}}
interfaceI1{}
要求:
将上述程序分别保存并调试,写下运行结果和编译结果。
调试过程:
1)保存文件C2.java(注意:
在一个java源程序中只能有一条包语句)
2)编译:
javac–d.C2.java
3)运行:
javaP1.C2
2、//源程序2
packageP2;
classC3{}
要求:
将上述程序分别保存并调试,写下运行结果和编译结果
1)保存文件C3.java
2)编译:
javac–d.C3.java
3)运行:
javaP2.C3
3、将下述源程序保存并编译,观察并写下编译结果。
packageP1;
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
{
publicvoidcry()
{System.out.println("汪汪.....");}
}
publicclassTestDemo
{publicstaticvoidmain(Stringargs[])
{Doga=newDog();
a.cry();
}
}
_______________________________________________________________________________
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;
voiddraw();//绘制图形,在程序中用信息输出表示,如,绘制一个圆
doublegetArea();//获取面积
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()
{
System.out.println("绘制一个长半轴为:
"+a+"\t短半轴为:
"+b+"的椭圆");
}
publicdoublegetArea()
{
returnPI*a*b;
}
publicdoublegetCircumference()
{
return2*PI*b+4*(a-b);
}
}
classRectangleimplementsShape//矩形
{
doublea,b;
publicRectangle(doublea,doubleb)
{
this.a=a;this.b=b;
}
publicvoiddraw()
{
System.out.println("绘制一个长为"+a+"\t宽为:
"+b+"的矩形");
}
publicdoublegetArea()
{
returna*b;
}
publicdoublegetCircumference()
{
return2*(a+b);
}
}
classTriangleimplementsShape//三角形
{
doublea,b,c;
publicTriangle(doublea,doubleb,doublec)
{
this.a=a;this.b=b;this.c=c;
}
publicvoiddraw()
{
System.out.println("绘制一个三边长分别为:
"+a+""+b+""+c+"的三角形");
}
publicdoublegetArea()
{
doublel=(a+b+c)/2;
returnjava.lang.StrictMath.pow(l*(l-a)*(l-b)*(l-c),1.0/2);
}
publicdoublegetCircumference()
{
returna+b+c;
}
}
publicclassTestShape
{
publicstaticvoidmain(String[]args)
{
Circlea=newCircle(3);
a.draw();
System.out.print("面积Area="+a.getArea()+"");
System.out.println("周长Circumference="+a.getCircumference());
Eclipseb=newEclipse(4,3);
b.draw();
System.out.print("面积Area="+b.getArea()+"");
System.out.println("周长Circumference="+b.getCircumference());
Rectanglec=newRectangle(3.2,4.5);
c.draw();
System.out.print("面积Area="+c.getArea()+"");
System.out.println("周长Circumference="+c.getCircumference());
Triangled=newTriangle(3,4,5);
d.draw();
System.out.print("面积Area="+d.getArea()+"");
System.out.println("周长Circumference="+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
{
privateStringname;
publicEmployee(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicabstractdoublecomputeSalary();
}
classManagerextendsEmployee
{
staticprivatedoubleregularwages;
publicManager(Stringname,doubleregularwages)
{
super(name);
this.regularwages=regularwages;
}
publicdoublecomputeSalary()
{
returnregularwages;
}
}
classSalesmanextendsEmployee
{
staticprivatedoubleregularwages;
staticprivateintsaleNumber;
staticprivatedoubleEveryBonus;
publicSalesman(Stringname,doubleregularwages,intsaleNumber,doubleEveryBonus)
{
super(name);
this.regularwages=regularwages;
this.saleNumber=saleNumber;
this.EveryBonus=EveryBonus;
}
publicdoublecomputeSalary()
{
returnregularwages+saleNumber*EveryBonus;
}
}
classWorkerextendsEmployee
{
staticprivateintworkdays;
staticprivatedoubledaysBonus;
publicWorker(Stringname,intworkdays,doubledaysBonus)
{
super(name);
this.workdays=workdays;
this.daysBonus=daysBonus;
}
publicdoublecomputeSalary()
{
returnworkdays*daysBonus;
}
}
publicclassWagesCompute
{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println("欢迎进入本公司员工工资支付计算系统:
");
System.out.println("经理的工资(固定):
");//经理工资
Managera=newManager("王阳",50000);
System.out.println(a.getName()+"的月工资为:
"+puteSalary());
System.out.println("销售人员的月工资:
");//销售人员工资
System.out.println("请输入销售人员的姓名:
");
Stringsalesname=input.next();
System.out.println("请输入销售人员的每月固定工资:
");
doubleregualwages=input.nextInt();
System.out.println("请输入销售人员的月销售量:
");
intsaleNumber=input.nextInt();
System.out.println("请输入销售人员的每份销售提成:
");
doubleEveryBonus=input.nextInt();
Salesmanb=newSalesman(salesname,regualwages,saleNumber,EveryBonus);
System.out.println(b.getName()+"的月工资为:
"+puteSalary());
System.out.println("一般员工的月工资:
");//一般员工工资
System.out.println("请输入一般员工的姓名:
");
Stringworkname=input.next();
System.out.println("请输入一般人员的月工作天数:
");
intworkdays=input.nextInt();
System.out.println("请输入一般人员的每天工资:
");
doubledaysBonus=input.nextInt();
Workerc=newWorker(workname,workdays,daysBonus);
System.out.println(c.getName()+"的月工资为:
"+puteSalary());
}
}
---------------------------------------------------实验作业上交说明
1、按照上面题目要求,完成实验,程序必须上机验证,如果程序没有正确运行结果,将记录“实验未完成”——将严重影响期末成绩。
2、实验文档要规范并且要编辑排版,先用WORD文档编辑,然后转换出PDF文档,文件名必须按照下面格式命名:
第*周实验+姓名+学号。
3、每周的实验文档,原则上周二上交(最迟在每周三晚8点前,过期按实验作业缺席处理)
4、上交实验文档方式:
Email至:
swjtujava@
5、发送Email时,Email主题必须是:
第*周实验+姓名+学号,否则不予处理