实验五 继承与多态
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五继承与多态
专业班级学号姓名
实验学时 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派生的子类——矩形类
{
@Override
public double getArea( ){return(width*height);}
@Override
public 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; //斜边
@Override
public double getArea( ){return(0.5*width*height);}
@Override
public 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; //半径
@Override
public double getArea( ){return(r*r*Math.PI);}
@Override
public 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);
@Override
public 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( ); //自动被定义为public
double getPerimeter( );
}
class Square implements Shapes //类要实现接口
{
public int x,y;
public int width,height;
@Override
public double getArea( ){return(width*height);}
@Override
public 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;
@Override
public double getArea( ){return(0.5*width*height);}
@Override
public 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);
}
}