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

实验五 继承与多态

实验五继承与多态专业班级学号姓名实验学时 2 实验类型验证性实验地点数计学院实验中心实验时间指导老师实验成绩年月日一、实验目的:理解继承与多态的概念,掌握三种访问控制的区别,掌握抽象类、接口与包的应用。

二、实验内容:1. 参考教材P124,示例程序C5_17,掌握抽象类的应用。

2. 参考教材P128,示例程序C5_18,掌握接口的使用方法。

3. 参考教材P133,示例程序C5_20,掌握包的使用方法。

三、实验要求:1.完成示例程序的验证。

2.写出实验报告。

四、实验步骤与结果:(由学生按照实验内容完成)程序一package ch01;import java.applet.Applet;import java.awt.Graphics;abstract class Shapes //定义一个抽象类Shapes{public int x,y; //x、y为画图的坐标public int width,height;public Shapes(int x,int y,int width,int height){ this.x=x;this.y=y;this.width=width;this.height=height;}abstract double getArea( ); //求图形面积的抽象方法abstract double getPerimeter( ); //求图形周长的抽象方法}class Square extends Shapes //由抽象类Shapes派生的子类——矩形类{@Overridepublic double getArea( ){return(width*height);}@Overridepublic double getPerimeter( ){return(2*width+2*height);}public Square(int x,int y,int width,int height){ super(x,y,width,height); }}class Triangle extends Shapes //由抽象类Shapes派生的子类——三角形类{public double c; //斜边@Overridepublic double getArea( ){return(0.5*width*height);}@Overridepublic double getPerimeter( ){return(width+height+c);}public Triangle(int x,int y,int base,int height){super(x,y,base,height);c=Math.sqrt(width*width+height*height);}}class Circle extends Shapes //由抽象类Shapes派生的子类——圆类{public double r; //半径@Overridepublic double getArea( ){return(r*r*Math.PI);}@Overridepublic double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y,width,height);r=(double)width/2.0;}}public class Ch01 extends Applet{Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);@Overridepublic void paint(Graphics g){//画正方形g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height); //画圆g.drawString("oval Area:"+Oval.getArea( ),50,115);}}程序二package ch02;import java.applet.Applet;import java.awt.Graphics;interface Shapes //定义一个接口{abstract double getArea( ); //自动被定义为publicdouble getPerimeter( );}class Square implements Shapes //类要实现接口{public int x,y;public int width,height;@Overridepublic double getArea( ){return(width*height);}@Overridepublic double getPerimeter( ){return(2*width+2*height);} public Square(int x,int y,int width,int height){this.x=x;this.y=y;this.width=width;this.height=height;}}class Triangle implements Shapes //类要实现接口{public int x,y;public int width,height;public double c;@Overridepublic double getArea( ){return(0.5*width*height);}@Overridepublic double getPerimeter( ){return(width+height+c);} public Triangle(int x,int y,int base,int height){this.x=x;this.y=y;width=base;this.height=height;c=Math.sqrt(width*width+height*height);}}class Circle implements Shapes //类要实现接口{public int x,y;public int width,height;public double r;@Overridepublic double getArea( ){return(r*r*Math.PI);}@Overridepublic double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){this.x=x;this.y=y;this.width=width;this.height=height;r=(double)width/2.0;}}public class Ch02 extends Applet{ Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);@Overridepublic void paint(Graphics g){g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height);g.drawString("oval Area:"+Oval.getArea( ),50,115);}}程序三package ch03;import java.applet.Applet;import java.awt.Graphics;interface Shapes{ abstract double getArea( );abstract double getPerimeter( );}class Coordinates{int x,y;public Coordinates(int x,int y){this.x=x;this.y=y;}}//Square Coordinates Shapesclass Square extends Coordinates implements Shapes{public int width,height;@Overridepublic double getArea( ){return(width*height);}@Overridepublic double getPerimeter( ){return(2*width+2*height);} public Square(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;}}class Triangle extends Coordinates implements Shapes {public int width,height;public double c;@Overridepublic double getArea( ){return(0.5*width*height);}@Overridepublic double getPerimeter( ){return(width+height+c);} public Triangle(int x,int y,int base,int height){super(x,y);width=base;this.height=height;c=Math.sqrt(width*width+height*height);}}class Circle extends Coordinates implements Shapes{public int width,height;public double r;@Overridepublic double getArea( ){return(r*r*Math.PI);}@Overridepublic double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;r=(double)width/2.0;}}public class Ch03 extends Applet{Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);@Overridepublic void paint(Graphics g){g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height);g.drawString("oval Area:"+Oval.getArea( ),50,115);}}四、实验步骤与结果:程序一:程序二:程序三:五、总结通过实验加深了我对继承与多态的概念的理解,继承就是子类可以继承父类中的属性和方法。

相关主题