当前位置:文档之家› java实验三_继承与多态

java实验三_继承与多态

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);
fig.print();
}
}
Shape:
packageshiyan3;
publicabstractclassShape {
protectedStringshape;
protectedShape(Stringshape) {
super();
this.shape=shape;
}
protectedShape() {
源代码:
Circle:
packageshiyan3;
publicclassCircleextendsShape {
protecteddoubler;//圆的半径为r
publicCircle(doubler) {
super("圆");
this.r=r;
}
publicString toString() {
实验报告
课程名称
面向对象程序设计
实验名称
实验三、继承与多态
日期
学生学号
姓名
班级
实验目的:
通过本次实验,要求学生能进一步掌握继承和多态的概念,熟练定义类、派生类、抽象类、抽象方法、虚拟方法和重载方法。
实验条件:
电脑一台、能上网查阅资料。
首先定义基本几何图形的抽象基类(Shape),然后定义Shape的派生类Circle(圆形)、Square(正方形)和Triangle(三角形)。要求通过抽象方法、虚拟方法和重载方法来计算各种图形的面积和周长。(提示:求三角形的面积用海伦公式: ,其中a,b,c是三角形的边长,L=(a+b+c)/2,即周长的一半。)
publicstaticvoidmain(Stringargs[]) {
Shapefig=newTriangle(6, 8, 10 );
fig.print();
fig=newTriangle(2, 4, 6);
fig.print();
fig=newSquare(4);
fig.print();
fig=newCircle(4);
System.out.println();
}
}
Triangle:
packageshiyan3;
publicclassTriangleextendsShape {
publicdoublea,b,c;
publicTriangle(doublea,doubleb,doublec) {
publicdoubleperimeter() {return4*a;}
publicdoublearea() {returna*a;}
}
实验结果:
实验总结(结论或问题分析):本次实验比较难,因为分别要写四个circle,Square,Triangle以及shape函数,所以在实验室没有写完,还是回到寝室利用课余时间才写出来的,通过本次实验,让我清楚,要提前做一些准备,比如在寝室先完成一部分,然后在实验室就能很快完成实验。实验让我掌握了一些几何图形抽象类的声明,以及求周长,面积。
else
return"三边各长"+ String.format("%1.2f,%1.2f,%1.2f",this.a,this.b,this.c) +"三条边构不成三角形";
}
publicdoubleperimeter() {
if(isTriangle())
returna+b+c;
else
return0;
this("未知");
}
publicabstractdoublearea();
publicabstractdoubleperimeter();
publicvoidprint() {
System.out.println(this.toString());
System.out.println(String.format("周长为%1.2f面积为%1.2f",this.perimeter(),this.area()));
protecteddoublea;//正方形边长为a
publicSquare(doublea) {
super("正方形");
this.a=a;
}
publicString toString() {
returnthis.shape+"边长为"+String.format("%1.2f",this.a);
returnthis.shape+"半径为"+String.format("%1.2f",this.r);
}
publicdoubleperimeter() {return2 * Math.PI*r;}
publicdoublearea() {returnMath.PI* Math.pow(r, 2);}
}
publicdoublearea() {
if(isTriangle()) {
doubles= perimeter() / 2;
returnMath.sqrt(s* (s-a) * (s-b) * (s-c));
}else
return0;
}
}
Square:packageshiyan3;
publicclassSquareextendsShape {
实验成绩
任课教师签名
郭俊恩
相关主题