实验报告二 Java类的封装、继承、多态

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
class Point2D{
protected int x,y;
Point2D(int X,int Y){//有参数的构造方法
x=X;
y=Y;
}
void offset(int a,int b){//位移Point2D
x+=a;
y+=b;
}
int get_x(){return x;}
int get_y(){return y;}
void print(){
System.out.println("坐标为:"+this.get_x()+" "+this.get_y());
}
}
class Point3D extends Point2D{//3d的继承
int z;
Point3D(int X,int Y,int Z){//3D的有参构造函数
Point2D(intX,intY){
x=X;
y=Y;
}
voidoffset(inta,intb){
x+=Байду номын сангаас;
y+=b;
}
intget_x(){returnx;}
intget_y(){returny;}
voidprint(){
System.out.println
("坐标为:"+this.get_x()+""+this.get_y());
for(i=0;i<10;i++){
x=(int)(10*Math.random());
y=(int)(10*Math.random());
z=(int)(10*Math.random());
if(10*Math.random()>5){
Point3D p=newPoint3D((int)(10*Math.random()),
提示:java.lang..Math.sqrt()方法
2.创建一个数组,随机生成Point2D或者Point3D的对象放于其中。最后依次调用数组中每个对象的“打印方法”,显示数组中存储的对象是什么。
提示:java.lang..Math.random()方法 或者java.util.Random类
2.2 设计工作
}
}
for(i=0;i<10;i++){
System.out.print("第"+(i+1)+"个点");
array[i].print();
}
}
}
(p2d1.get_y()-p2d2.get_y())*(p2d1.get_y()-p2d2.get_y()));
System.out.println("2D点距离:"+d);
d=(float)Math.sqrt((p3d1.get_x()-p3d2.get_x())*(p3d1.get_x()-p3d2.get_x())+
}
Point 3D代码:
classPoint3D{
protectedintx,y,z;
Point3D(intX,intY,int Z){
x=X;
y=Y;
z=Z;
}
voidoffset(inta,intb,int c){
super(a,b);
z+=c;
}
intget_x(){returnx;}
intget_y(){returny;}
x=s.nextInt();
y=s.nextInt();
z=s.nextInt();
Point3D p3d2=newPoint3D(x,y,z);//初始化对象
d=(float)Math.sqrt((p2d1.get_x()-p2d2.get_x())*(p2d1.get_x()-p2d2.get_x())+
x=s.nextInt();
y=s.nextInt();
Point2D p2d1=newPoint2D(x,y);//初始化对象
System.out.println("输入X2_2D,Y2_2D");
x=s.nextInt();
y=s.nextInt();
Point2D p2d2=newPoint2D(x,y);//初始化对象
(4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。
(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D的对象p3d1,p3d2,打印出他们之间的距离。
super(X,Y);
z=Z;
}
void offset(int a,int b,int c){//方法的重载,参数个数不同
x+=a;
y+=b;
z+=c;
}
intget_z(){returnz;}
voidprint(){
System.out.println("坐标为:"+this.get_x()+" "+this.get_y()
1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:
(1)Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。
(2)Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。
System.out.println("输入X1_3D,Y1_3D,Z1_3D");
x=s.nextInt();
y=s.nextInt();
z=s.nextInt();
Point3D p3d1=newPoint3D(x,y,z);//初始化对象
System.out.println("输入X2_3D,Y2_3D,Z2_3D");
设计思路:
构造Point 2D类,私有成员x,y存放2D点位置坐标,构造函数传入坐标值。Offset()函数平移2D点,get_x(),get_y()分别返回x,y坐标。Print()函数打印2D点坐标。再构造继承了2D类的Point3D类,将上述2D点函数覆盖扩充到3D。创建Point 2D的对象数组,存放随机产生的Point 2D或Point 3D对象。用java.util.Random方法产生随机数。
Java实验二类的封装、继承、多态
一.实验目的
1. 复习、理解OOP的三大特征——封装、继承和多态。
2. 学会使用Java编写简单的类。理解类的属性和方法。
3.掌握关键字private, protected, public的作用,掌握静态类,内部类的概念。
4. 掌握多态的概念。
二.实验内容
2.1程序要求
编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。
运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。
四.程序代码
import java.util.Scanner;//导入util包中的Scannner类
+" "+this.get_z());
}
}
publicclassSpacePoint{
publicstaticvoidmain(String[]args){
intx,y,z;
floatd;
inti;
Scanner s =newScanner(System.in);
System.out.println("输入X1_2D,Y1_2D");
(3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可实现对Point3D的成员变量x, y,z的初始化。
(int)(10*Math.random()),
(int)(10*Math.random()));
array[i]=p;
}
else{
Point2D p=newPoint2D((int)(10*Math.random()),
(int)(10*Math.random()));//初始化对象并赋初值
array[i]=p;
类图:
point 2D:
Protected int x, y; //变量
Point 2D(int x, int y);//构造方法
Void offest(int a, int b); //位移2D
Int get_x();
Int get_y();
Void print();
Point 3D
Int z;//变量
intget_z(){returnz;}
voidprint(){
System.out.println
("坐标为:"+this.get_x()+""+this.get_y()+""+this.get_z());
}
}
三.思考题
1.什么是类的多态性。
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
(p3d1.get_y()-p3d2.get_y())*(p3d1.get_y()-p3d2.get_y())+
(p3d1.get_z()-p3d2.get_z())*(p3d1.get_z()-p3d2.get_z()));
System.out.println("3D点距离:"+d);
Point2D array[]=newPoint2D[10];//初始化数组对象
Point3D(int x,int y,int z);//构造方法
Point3D(point2D p,int z);//构造方法
Void offest(int a,int b,intc);//位移3D
Int get_z();
Void print();
Point 2D代码:
classPoint2D{
protectedintx,y;
相关文档
最新文档