分别编写两个类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来表示二维空间和三维空间的点,使之满足下列要求:的更多相关文章
- [转]C#利用反射实现两个类的对象之间相同属性的值的复制
本文转自:https://blog.csdn.net/u013093547/article/details/53584591 在使用c#进行程序编写时,会遇到一个问题,两个属性字段差不多相同的类要进行 ...
- java环境变量、集成开发环境与使用两个类
1.集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集成了代码编 ...
- Access Violation分成两大类:运行期和设计期(很全的解释)
用Delphi开发程序时,我们可以把遇到的Access Violation分成两大类:运行期和设计期. 一.设计期的Access Violation 1.硬件原因 在启动或关闭Delphi IDE以 ...
- 通过实现System.IComparable接口的CompareTo方法对两个类进行比较
假设现在有一个学生类 class Student { int age; public Student(int age) { this.age = age; } } 要使学生类之间能进行比较,实现Sys ...
- 【java回调】java两个类之间的回调函数传递
背景交代:熟悉用js开发的cordovaAPP:对java一窍不通的我,老师让做一个监测用户拍照事件的功能,无奈没有找到现成的库,无奈自己动手开发java插件~~0基础java GreenHand,祝 ...
- Reader与InputStream两个类中的read()的区别
InputStream类的read()方法是从流里面取出一个字节,他的函数原型是 int read(); ,Reader类的read()方法则是从流里面取出一个字符(一个char),他的函数原型也是 ...
- 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...
- 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n
35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...
- java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish
编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private Str ...
随机推荐
- 小tip: 某简单的字符重叠与图形生成----张鑫旭
引言 字符重叠不是什么稀奇的东西. 如1像素错位模拟阴影效果: 或者powerFloat中展示的带边框三角: 以及其他很多. 但是技术这东西不是豆腐,老了可以吃,臭了也可以吃:那我这里还拿着个说事作甚 ...
- jQuery基础(DOM篇,append(),after(),prepend(),insertAfter(),节点删除,遍历方法each())
1.DOM创建节点及节点属性 创建流程比较简单,大体如下: - 创建节点(常见的:元素.属性和文本) - 添加节点的一些属性 - 加入到文档中 流程中涉及的一点方法: - 创建元素:d ...
- Pwn With longjmp
前言 这个是 seccon-ctf-quals-2016 的一个题,利用方式还是挺特殊的记录一下. 题目链接 http://t.cn/RnfeHLv 正文 首先看看程序的安全措施 haclh@ubun ...
- hue简单介绍
hue定义: HUE=Hadoop User Experience 个人理解:可视图的webui界面,方便大数据技术之间的CRUD操作. 官方定义:Hue是一个能够与Apache Hadoop交互的W ...
- 浅谈Java——泛型DAO
首先解释一下为什么要学习泛型DAO.平时在写DAO的时候是一个接口对应一个实现类,实现类里面要写很多的操作数据库的方法.当我们有很多的javaben的时候我们会写很多的接口和实现类,并且里面的代码都是 ...
- 解决initializing java tooling(1%)
这是wtp的一个bug,下载附件runtimePatch_327801.zip,解压,放到eclipse下,重启就好了.
- Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
https://blog.csdn.net/hanchao5272/article/details/79819460 转载自:https://blog.bbzhh.com/index.php/arch ...
- .net网站转到出错页是如何实现的
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"><error s ...
- Oracle GI 日志收集工具 - TFA
1.TFA的目的: TFA是个11.2版本上推出的用来收集Grid Infrastructure/RAC环境下的诊断日志的工具,它可以用非常简单的命令协助用户收集RAC里的日志,以便进一步进行诊断:T ...
- 转:C# WinForm窗体及其控件的自适应
一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率> ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...