1、实验报告课程名称面向对象程序设计实验名称实验三、类的继承与多态日期2018/4/23学生学号姓名班级实验目的: 通过本次实验,要求学生能进一步掌握继承和多态的概念,熟练定义类、派生类、抽象类、抽象方法、虚拟方法和重载方法。实验条件: 电脑一台、能上网查阅资料。首先定义基本几何图形的基类(Shape),然后定义Shape的派生类Circle(圆形)、Square(正方形)和Triangle(三角形)。要求通过方法覆盖来计算各种图形的面积和周长。(提示:求三角形的面积用海伦公式:,其中a,b,c是三角形的边长,L=(a+b+c)/2,即周长的一半。)源代码:package ruanjian.zha
2、ihaiyang.shiyan3;public abstract class Shape protected String name;public Shape()name=图形类;public Shape(String name)super();this.name=name;public String getName() return name;public void setName(String name) this.name = name;abstract double area();abstract double length();public String toString() / T
3、ODO Auto-generated method stubreturn name+:周长和面积分别是+length()+,+area();package ruanjian.zhaihaiyang.shiyan3;public class Square extends Shape private double a;public Square(double a,String name)super(name);this.a=a;double area() / TODO Auto-generated method stubreturn Math.pow(a, 2);double length() /
4、 TODO Auto-generated method stubreturn 4*a;package ruanjian.zhaihaiyang.shiyan3;public class Circle extends Shape private double r;public Circle(double r,String name)super(name);this.r=r;double area() / TODO Auto-generated method stubreturn Math.PI*Math.pow(r, 2);double length() / TODO Auto-generate
5、d method stubreturn 2*Math.PI*r;package ruanjian.zhaihaiyang.shiyan3;public class Triangle extends Shape private double a;private double b;private double c;public Triangle (double a,double b,double c,String name)super(name);this.a=a;this.b=b;this.c=c;double area() double L=(a+b+c)/2;/ TODO Auto-gene
6、rated method stubreturn Math.sqrt(L*( L-a)*( L-b)*( L-c);double length() / TODO Auto-generated method stubdouble L=(a+b+c)/2;return 2*L;package ruanjian.zhaihaiyang.shiyan3;public class ShapeDemo public static void main(String args) Shape s1=null;s1=new Circle(5, 圆形);System.out.println(s1.toString();s1= new Square(6, 正方形);System.out.println(s1.toString();s1=new Triangle(3, 4, 5, 三角形);System.out.println(s1.toString();实验结果:实验总结(结论或问题分析):通过本次实验,进一步了解了继承和多态的概念,以及如何定义类、派生类、抽象类、抽象方法、虚拟方法和重载方法。对老师在课堂上讲解的知识进一步掌握。实验成绩任课教师签名