java实验三_继承与多态
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
源代码:
Circle:
packageshiyБайду номын сангаасn3;
publicclassCircleextendsShape {
protecteddoubler;//圆的半径为r
publicCircle(doubler) {
super("圆");
this.r=r;
}
publicString toString() {
fig.print();
}
}
Shape:
packageshiyan3;
publicabstractclassShape {
protectedStringshape;
protectedShape(Stringshape) {
super();
this.shape=shape;
}
protectedShape() {
protecteddoublea;//正方形边长为a
publicSquare(doublea) {
super("正方形");
this.a=a;
}
publicString toString() {
returnthis.shape+"边长为"+String.format("%1.2f",this.a);
System.out.println();
}
}
Triangle:
packageshiyan3;
publicclassTriangleextendsShape {
publicdoublea,b,c;
publicTriangle(doublea,doubleb,doublec) {
super("三角形");
实验成绩
任课教师签名
郭俊恩
publicstaticvoidmain(Stringargs[]) {
Shapefig=newTriangle(6, 8, 10 );
fig.print();
fig=newTriangle(2, 4, 6);
fig.print();
fig=newSquare(4);
fig.print();
fig=newCircle(4);
this("未知");
}
publicabstractdoublearea();
publicabstractdoubleperimeter();
publicvoidprint() {
System.out.println(this.toString());
System.out.println(String.format("周长为%1.2f面积为%1.2f",this.perimeter(),this.area()));
}
publicdoubleperimeter() {return4*a;}
publicdoublearea() {returna*a;}
}
实验结果:
实验总结(结论或问题分析):本次实验比较难,因为分别要写四个circle,Square,Triangle以及shape函数,所以在实验室没有写完,还是回到寝室利用课余时间才写出来的,通过本次实验,让我清楚,要提前做一些准备,比如在寝室先完成一部分,然后在实验室就能很快完成实验。实验让我掌握了一些几何图形抽象类的声明,以及求周长,面积。
实验报告
课程名称
面向对象程序设计
实验名称
实验三、继承与多态
日期
学生学号
姓名
班级
实验目的:
通过本次实验,要求学生能进一步掌握继承和多态的概念,熟练定义类、派生类、抽象类、抽象方法、虚拟方法和重载方法。
实验条件:
电脑一台、能上网查阅资料。
首先定义基本几何图形的抽象基类(Shape),然后定义Shape的派生类Circle(圆形)、Square(正方形)和Triangle(三角形)。要求通过抽象方法、虚拟方法和重载方法来计算各种图形的面积和周长。(提示:求三角形的面积用海伦公式: ,其中a,b,c是三角形的边长,L=(a+b+c)/2,即周长的一半。)
this.a=a;
this.b=b;
this.c=c;
}
publicbooleanisTriangle() {
returna+b>c&&a+c>b&&b+c>a?true:false;
}
publicString toString() {
if(isTriangle())
returnthis.shape+"三边各长"+ String.format("%1.2f,%1.2f,%1.2f",this.a,this.b,this.c);
else
return"三边各长"+ String.format("%1.2f,%1.2f,%1.2f",this.a,this.b,this.c) +"三条边构不成三角形";
}
publicdoubleperimeter() {
if(isTriangle())
returna+b+c;
else
return0;
}
publicdoublearea() {
if(isTriangle()) {
doubles= perimeter() / 2;
returnMath.sqrt(s* (s-a) * (s-b) * (s-c));
}else
return0;
}
}
Square:packageshiyan3;
publicclassSquareextendsShape {
returnthis.shape+"半径为"+String.format("%1.2f",this.r);
}
publicdoubleperimeter() {return2 * Math.PI*r;}
publicdoublearea() {returnMath.PI* Math.pow(r, 2);}
Circle:
packageshiyБайду номын сангаасn3;
publicclassCircleextendsShape {
protecteddoubler;//圆的半径为r
publicCircle(doubler) {
super("圆");
this.r=r;
}
publicString toString() {
fig.print();
}
}
Shape:
packageshiyan3;
publicabstractclassShape {
protectedStringshape;
protectedShape(Stringshape) {
super();
this.shape=shape;
}
protectedShape() {
protecteddoublea;//正方形边长为a
publicSquare(doublea) {
super("正方形");
this.a=a;
}
publicString toString() {
returnthis.shape+"边长为"+String.format("%1.2f",this.a);
System.out.println();
}
}
Triangle:
packageshiyan3;
publicclassTriangleextendsShape {
publicdoublea,b,c;
publicTriangle(doublea,doubleb,doublec) {
super("三角形");
实验成绩
任课教师签名
郭俊恩
publicstaticvoidmain(Stringargs[]) {
Shapefig=newTriangle(6, 8, 10 );
fig.print();
fig=newTriangle(2, 4, 6);
fig.print();
fig=newSquare(4);
fig.print();
fig=newCircle(4);
this("未知");
}
publicabstractdoublearea();
publicabstractdoubleperimeter();
publicvoidprint() {
System.out.println(this.toString());
System.out.println(String.format("周长为%1.2f面积为%1.2f",this.perimeter(),this.area()));
}
publicdoubleperimeter() {return4*a;}
publicdoublearea() {returna*a;}
}
实验结果:
实验总结(结论或问题分析):本次实验比较难,因为分别要写四个circle,Square,Triangle以及shape函数,所以在实验室没有写完,还是回到寝室利用课余时间才写出来的,通过本次实验,让我清楚,要提前做一些准备,比如在寝室先完成一部分,然后在实验室就能很快完成实验。实验让我掌握了一些几何图形抽象类的声明,以及求周长,面积。
实验报告
课程名称
面向对象程序设计
实验名称
实验三、继承与多态
日期
学生学号
姓名
班级
实验目的:
通过本次实验,要求学生能进一步掌握继承和多态的概念,熟练定义类、派生类、抽象类、抽象方法、虚拟方法和重载方法。
实验条件:
电脑一台、能上网查阅资料。
首先定义基本几何图形的抽象基类(Shape),然后定义Shape的派生类Circle(圆形)、Square(正方形)和Triangle(三角形)。要求通过抽象方法、虚拟方法和重载方法来计算各种图形的面积和周长。(提示:求三角形的面积用海伦公式: ,其中a,b,c是三角形的边长,L=(a+b+c)/2,即周长的一半。)
this.a=a;
this.b=b;
this.c=c;
}
publicbooleanisTriangle() {
returna+b>c&&a+c>b&&b+c>a?true:false;
}
publicString toString() {
if(isTriangle())
returnthis.shape+"三边各长"+ String.format("%1.2f,%1.2f,%1.2f",this.a,this.b,this.c);
else
return"三边各长"+ String.format("%1.2f,%1.2f,%1.2f",this.a,this.b,this.c) +"三条边构不成三角形";
}
publicdoubleperimeter() {
if(isTriangle())
returna+b+c;
else
return0;
}
publicdoublearea() {
if(isTriangle()) {
doubles= perimeter() / 2;
returnMath.sqrt(s* (s-a) * (s-b) * (s-c));
}else
return0;
}
}
Square:packageshiyan3;
publicclassSquareextendsShape {
returnthis.shape+"半径为"+String.format("%1.2f",this.r);
}
publicdoubleperimeter() {return2 * Math.PI*r;}
publicdoublearea() {returnMath.PI* Math.pow(r, 2);}