java实验01Word文档格式.docx
- 文档编号:19368960
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:22
- 大小:447.96KB
java实验01Word文档格式.docx
《java实验01Word文档格式.docx》由会员分享,可在线阅读,更多相关《java实验01Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
(3)接口实验
程序文件TestInterface.java。
运行该程序,然后按【思考问题】内容修改和观察程序。
packagecn.edu.sdju.joshua;
interfaceShapeAreaPeri{
doublegetArea();
doublegetPerimeter();
}
classTriangleimplementsShapeAreaPeri{
inta,b,c;
Triangle(inta,intb,intc){
this.a=a;
this.b=b;
this.c=c;
}
publicdoublegetArea(){
doublerp=(a+b+c)/2.0;
returnMath.sqrt((rp-a)*(rp-b)*(rp-c));
publicdoublegetPerimeter(){
return(a+b+c);
classRectangleimplementsShapeAreaPeri{
intwidth,length;
Rectangle(intw,intl){
width=w;
length=l;
returnwidth*length;
return(2*(width+length));
classCircleimplementsShapeAreaPeri{
intridus;
finaldoublepi=3.14;
Circle(intr){
ridus=r;
returnpi*ridus*ridus;
return2*pi*ridus;
publicclassInterfaceDemo{
publicstaticvoidmain(Stringargs[]){
ShapeAreaPeri[]sap=newShapeAreaPeri[5];
sap[0]=newRectangle(3,7);
sap[1]=newRectangle(10,8);
sap[2]=newCircle(8);
sap[3]=newTriangle(4,4,4);
sap[4]=newCircle
(2);
for(inti=0;
i<
5;
i++){
System.out.println("
当前形状面积="
+sap[i].getArea());
当前形状周长="
+sap[i].getPerimeter());
}
【思考问题】
在实现类Rectangle中注释掉一个方法后进行编译,看发生了什么?
为什么?
在实现类Rectangle中将各实现方法前的public修饰符去掉再进行编译,看发生了什么?
将接口ShapeAreaPeri中定义的两个方法前加上abstract修饰符再编译,看对程序有影响否?
不用单独的实现类Rectangle,直接在主类InterfaceDemo中实现那两个方法,如何修改程序?
将接口ShapeAreaPeri中定义的两个方法拆分定义成两个接口,即每个接口只定义一个方法,程序将如何修改?
(4)根据功能提示写程序:
设计一个实数类,一个复数类,都包含求模长(绝对值)、判断是否为0,求与它数和差积商的方法。
将全部类都定义在同一个.java文件中,部分代码已给出。
classRealNumber{
doublerealPart;
publicRealNumber(doublerealPart){
this.realPart=realPart;
publicRealNumber(){
this(0);
}
doublegetReal(){
returnrealPart;
publicdoublegetModulus(){//求模长,即绝对值
returnMath.abs(realPart);
publicbooleanisZero(){
//调用getModulus判断是不是0并返回结果
publicRealNumberAdd(RealNumbernum){
doublesumRealPart=this.realPart+num.getReal();
//得到和的数值
RealNumbersum=newRealNumber(sumRealPart);
//用和的数值构造实数类对象
returnsum;
//减法Subtract
//乘法Multiply
//除法Divide,除数为0(用isZero方法判断)时输出错误信息,返回用0构造的实数对象
classComplexNumber{//复数类继承实数类
//子类增加代表虚部的成员变量imaginaryPart
publicComplexNumber(doublerealPart,doubleimaginaryPart){//两个参数的构造方法
//子类构造方法第一条语句须调用父类构造方法
//给虚部赋值
//一个参数构造方法,将虚部当作0,调用两个参数的构造方法(两个参数的构造方法已包含对父类构造方法的调用,无需再调用)
//无参构造方法,将实部虚部都当作0,调用两个参数的构造方法(两个参数的构造方法已包含对父类构造方法的调用,无需再调用)
//getImaginary方法
//根据复数模长定义,重写父类求模长方法
//加法:
参数与返回值都是ComplexNumber类型
//减法:
//乘法:
//除法:
参数与返回值都是ComplexNumber类型,分母需要实数化,需用父类isZero判断除数是否为0,若为0返回用0构造的复数对象
publicclassDemo{
publicstaticvoidmain(Stringargs[]){
RealNumberr1=newRealNumber
(1);
RealNumberr2=newRealNumber
(2);
RealNumbersum=r1.Add(r2);
//r1和r2的和
//输出r1和r2的和差积商,注意输出信息的可读性
//输出r1和0的和差积商(需要用0构造实数类对象),注意输出信息的可读性,
ComplexNumberc1=newComplexNumber(1,2);
ComplexNumberc2=newComplexNumber(3,4);
//输出c1和c2的和差积商,注意输出信息的可读性
//输出c1和0的和差积商(需要用0构造复数类对象),注意输出信息的可读性
三、实验结果(关键代码和运行结果)
/**
*测试台球类
*
*@paramargs
*/
publicclassTestBoll{
publicstaticvoidmain(String[]args){
Billiardsbilliards=newBilliards("
紅色"
10);
billiards.show();
System.out.println("
-----------"
);
billiards.setR(20);
billiards.setColor("
蓝色"
classBoll{
privatedoubler;
publicBoll(doubler){
this.r=r;
publicdoublegetR(){
returnr;
publicvoidsetR(doubler){
classBilliardsextendsBoll{
privateStringcolor;
publicBilliards(Stringcolor,doubler){
super(r);
this.color=color;
publicvoidsetColor(Stringcolor){
/**
*显示台球的基本信息
publicvoidshow(){
台球的顏色:
"
+color+"
\t半径:
+getR());
图1-1运行结果
(2)/**
*创建学生类,并记录每个学生的信息
*@authorAdministrator
publicclassPerson{
publicStringname;
publicStringsex;
publicintage;
publicPerson(Stringname,Stringsex,intage){
this.name=name;
this.sex=sex;
this.age=age;
classStudentextendsPerson{
publicStringStuNum;
publicStringclassNum;
publicvoidsetAge(intage){
publicStudent(Stringname,Stringsex,intage,StringStuNum,
StringclassNum){
super(name,sex,age);
this.StuNum=StuNum;
this.classNum=classNum;
*显示学生的基本信息的方法
publicvoidshowInfo(){
姓名:
+name+"
性別:
+sex+"
年齡:
+age+"
学号:
+StuNum+"
班号:
+classNum);
}
Studentstudent[]=newStudent[3];
student[0]=newStudent("
张杨松"
"
男"
20,"
141003330212"
12"
student[1]=newStudent("
周梦帆"
19,"
141003330213"
13"
student[2]=newStudent("
陈思成"
141003330211"
11"
/*
*采用for循环,遍历,然后分别打印出每个同学的信息
*/
for(Student_student:
student){
_student.showInfo();
(3)
编译出错;
原因:
Rectangle实现了一个接口,就必须要实现接口中所有的抽象方法。
在接口中,成员方法的默认属性为:
public、abstrack;
实现接口中的方法时,必为:
public。
无影响;
原因:
接口中的成员方法的默认属性为:
classRectangle{
publicintgetWidth(){
returnwidth;
publicvoidsetWidth(intwidth){
this.width=width;
publicintgetLength(){
returnlength;
publicvoidsetLength(intlength){
this.length=length;
return0;
publicclassInterfaceDemoextendsRectangleimplementsShapeAreaPeri{
InterfaceDemo(intw,intl){
super(w,l);
returnlength*width;
return2*(length+width);
ShapeAreaPeri[]sap=newShapeAreaPeri[3];
sap[0]=newCircle(8);
sap[1]=newTriangle(4,4,4);
sap[2]=newCircle
(2);
sap.length;
---------------"
Rectangler=newInterfaceDemo(10,15);
长方形的面积为:
"
+r.getArea());
长方形的周长为:
+r.getPerimeter());
interfaceGetArea{
//获得面积、
interfaceGetPerimeter{
//获得周长
//三角形类
classTriangleimplementsGetArea,GetPerimeter{
//长方形类
classRectangleimplementsGetArea,GetPerimeter{
classCircleimplementsGetArea,GetPerimeter{
Rectangler=newRectangle(3,7);
Circlec=newCircle(8);
Trianglet=newTriangle(4,4,4);
长方形的面积="
长方形的周长="
--------------"
圆的面积="
+c.getArea());
圆的周长="
+c.getPerimeter());
三角形的面积="
+t.getArea());
三角形的周长="
+t.getPerimeter());
(4)
classRealNumber{
this.realPart=realPart;
publicRealNumber(){
d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验 01