分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:

(1) Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。

(2)Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。

(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的初始化。

(4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。

(5)在一个测试类中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D的对象p3d1,p3d2,打印出他们之间的距离。

2D与3D既是独立又是继承关系.

主要用到:1.数学函数求两点之间的距离2.super的用法3.类的继承4.对象作函数参数

以下通过代码具体分析

import java.lang.Math;
class Point2D{
protected int x,y;        //保护类成员主要用于继承
Point2D(){
}
Point2D(int x,int y){       //有参构造方法
this.x = x;
this.y = y;
}
public int getX(){
return x;
}
public int getY(){        //方便在其他类中使用该类中的私有成员变量
return y;
}
public void offset(int a,int b){      //偏移后的横纵坐标值
this.x += a;
this.y += b;
}
public void show(){        //show横纵坐标
System.out.println("坐标为:["+x+ "," +y +"]");
}
}
class Point3D extends Point2D{  //类的继承
private int z;           //第三点x
Point3D(){
}
Point3D(int x,int y,int z){      //有参构造方法三点分别初始化
super(2,3);            //调用父类的有两个参数的构造方法
this.z= z;
}
public int getZ(){
return z;
}
Point3D(Point2D p,int z){     //有参构造方法,以对象作形参.用p对象调用get方法以初始化继承的私有成员变量
super(p.getX(),p.getY());
this.z=z;
}
public void offset(int a,int b,int c){  //3D的偏移量
super.offset(a,b);         //方法同上,调用父类的偏移方法
z=z+c;
}
public void show(){        //show3D坐标值
System.out.println("坐标为:["+x+ "," +y + "," + z +"]");
}
}
public class Test3_1 {
public static void main(String[] args){
Point2D p2d1=new Point2D(2,3);
Point2D p2d2=new Point2D(3,4);     //初始化2D两点p2d1,p2d2
double retDistance2D=distance2D(p2d1,p2d2);
System.out.println(retDistance2D);    //输出2D两点之间距离
Point3D p3d1=new Point3D(2,3,4);
Point3D p3d2=new Point3D(3,4,5);
double retDistance3D=distance3D(p3d1,p3d2);
System.out.println(retDistance3D);    //同上面的2D
}
public static double distance2D(Point2D p2d1,Point2D p2d2){//对象作形参
double distance;
double distanceX;
double distanceY;
distanceX=Math.pow((p2d1.getX()-p2d2.getX()),2);//(x1-x2)2=X
distanceY=Math.pow((p2d1.getY()-p2d2.getY()),2);//(y1-y2)2=Y
distance=Math.sqrt(distanceY+distanceX);//X+Y再开方
return distance;

}
public static double distance3D(Point3D p3d1,Point3D p3d2){//同2D方法一致
double distance;
double distanceX;
double distanceY;
double distanceZ;
distanceX=Math.pow((p3d1.getX()-p3d2.getX()),2);
distanceY=Math.pow((p3d1.getY()-p3d2.getY()),2);
distanceZ=Math.pow((p3d1.getZ()-p3d2.getZ()),2);
distance=Math.sqrt(distanceY+distanceX+distanceZ);
return distance;

}
}

分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点相关推荐

  1. 分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求

    分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求 原题 分析 代码 原题 分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下 ...

  2. 本关任务:编写一个Point类,有x、y两个属性。编写一个PointDemo类,并提供一个distance(Point p1,Point p2)方法用于计算两点之间的距离,实例化两个具体的Point对

    #java编程基础 以后会时常更新java编程题,分享所遇之难,答疑解惑,共同努力. 本关任务:编写一个Point类,有x.y两个属性.编写一个PointDemo类,并提供一个distance(Poi ...

  3. c++类与对象(多文件编程!)(编写一个有关股票的程序,其中有两个类:一个是深圳类shen_stock,另一个是上海类shang_stock。)

    #编写一个有关股票的程序,其中有两个类:一个是深圳类shen_stock,另一个是上海类shang_stock.类中有三项私有数据成员:普通股票个数general.ST股票个数st和PT股票个数pt, ...

  4. 编写book.java_Java集合框架上机练习题:编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法........

    编写一个Book类,该类至少有name和price两个属性.该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系.在 ...

  5. java编写计算类加减乘除_老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java...

    导航:网站首页 > 老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java 时间:2019-4-10 老师要求张浩使用面向对象的思想编 ...

  6. 编写一个表达学生和课程关系的程序,定义两个类Student和Course.在Student类中有一个Course的数组,表示学生所选的课程

    编写一个表达学生和课程关系的程序, 定义两个类Student和Course.在Student类中有一个Course的数组,表示学生所选的课程;在Course类里有一个Student数组,表示选了该课程 ...

  7. JAVA类与对象tank_5.编写一个java程序,该程序有两个类:Tank(用于刻画坦克)和Fight(主类)。 已知坦克类如下:...

    5.编写一个java程序,该程序有两个类:Tank(用于刻画坦克)和Fight(主类). 已知坦克类如下: public classTank{ double speed;        //坦克速度 ...

  8. c++继承与派生(设计一个圆类Circle和一个桌子类Table,另设计一个圆桌类Roundtable,它是前面两个类的派生类,要求编写测试程序给出输出一个圆桌的高度、面积和颜色等数据。)

    #设计一个圆类Circle和一个桌子类Table,另设计一个圆桌类Roundtable,它是前面两个类的派生类,要求编写测试程序给出输出一个圆桌的高度.面积和颜色等数据. #include<io ...

  9. 按要求编写一个Java应用程序:(1)编写一个矩形类Rect,包含:两个属性...2、定义一个接口Shape,包括计算图形面积(getArea)和周长(getcir)...

    1.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含:两个属性:矩形的宽width和高height:一个带有两个参数的构造方法,用于将width和height属性初化:两个方法:求 ...

最新文章

  1. c语言图论,图论问题------大家过来看看
  2. 学密码学一定得学程序 KMP
  3. HDU1407 测试你是否和LTC水平一样高 暴力、二分、hash
  4. 产品认知:真正厉害的产品经理,都是“本质思维”的高手
  5. LeetCode 1016. 子串能表示从 1 到 N 数字的二进制串(bitset)
  6. django-带签名的cookie
  7. 微软将于6月24日发布下一代Windows
  8. node ajax crud,基于node.js和rethinkdb的CRUD(增删改查)Web服务
  9. ECNU·AntNLP主页船新上线!
  10. 域网批量装系统通用版服务器,局域网批量网刻Ghost
  11. 扫描到pc服务器位置,打印机s2520 扫描到PC服务器之通讯录怎么设置
  12. 大学计算机科技论文格式,大学科技论文范文3000字_优秀论文范文3000字_论文范文参考3000字...
  13. 输入两个正整数m和n,求其最大公约数和最小公倍数。
  14. 新媒体运营的基本方法——四步法让你成为新媒体业内大佬
  15. SD卡格式化|SD卡数据恢复技巧
  16. 基于java的毕业设计选题题目推荐
  17. android简单视频播放器,推荐用于Android超简单视频播放器的ArtPlayer
  18. java 多态判断非空_重拾JavaSE基础——多态及其实现方式
  19. 新华三联合英特尔共同增强服务器内存的可靠性
  20. C语言四轴联动程序,四轴联动程序中F值不恒定之解决方案

热门文章

  1. idea重装后打不开,点起来没反应(难受)
  2. 微信编辑器实用小功能
  3. Android加载本地大Bitmap文件,解析出来的Bitmap是整张图片是黑色的
  4. char *const p ,char const *p,const char *p的区别
  5. 艾司博讯:拼多多商品怎样多件一起付款?
  6. C# 字符串转意和反转意
  7. Lync 2013 语言包安装
  8. Quantopian 入门系列一
  9. java gc内存_Java内存模型和GC机制
  10. JAVA程序员常用访问网址