JAVA第06周实验包接口与抽象类.docx

上传人:b****8 文档编号:11128114 上传时间:2023-02-25 格式:DOCX 页数:16 大小:371.07KB
下载 相关 举报
JAVA第06周实验包接口与抽象类.docx_第1页
第1页 / 共16页
JAVA第06周实验包接口与抽象类.docx_第2页
第2页 / 共16页
JAVA第06周实验包接口与抽象类.docx_第3页
第3页 / 共16页
JAVA第06周实验包接口与抽象类.docx_第4页
第4页 / 共16页
JAVA第06周实验包接口与抽象类.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

JAVA第06周实验包接口与抽象类.docx

《JAVA第06周实验包接口与抽象类.docx》由会员分享,可在线阅读,更多相关《JAVA第06周实验包接口与抽象类.docx(16页珍藏版)》请在冰豆网上搜索。

JAVA第06周实验包接口与抽象类.docx

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主题必须是:

第*周实验+姓名+学号,否则不予处理

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1