从另一个类(java)访问数据?
我创建了一个“父”类(不确定这是否是正确的术语),它表示三维空间中的一个点,如下所示:从另一个类(java)访问数据?,java,class,public,Java,Class,Public,我创建了一个“父”类(不确定这是否是正确的术语),它表示三维空间中的一个点,如下所示: public class Point3d { private double xCoord; private double yCoord; private double zCoord; public Point3d(double x,double y, double z ){ xCoord = x; yCoord = y; z
public class Point3d {
private double xCoord;
private double yCoord;
private double zCoord;
public Point3d(double x,double y, double z ){
xCoord = x;
yCoord = y;
zCoord = z;
}
public Point3d() {
this (0,0,0);
}
public double getxCoord() {
return xCoord;
}
public double getyCoord() {
return yCoord;
}
public double getzCoord() {
return zCoord;
}
public void setX(double val){
xCoord= val;
}
public void setY(double val){
yCoord= val;
}
public void setZ(double val){
zCoord= val;
}
}
我有两个类定义了两个不同的点(x,y,z)
头等舱:
package threedimpoint;
public class FirstPoint {
public static void main(String[] args) {
Point3d frst = new Point3d();
frst.setX(0);
frst.setY(0);
frst.setZ(0);
System.out.println("(" + frst.getxCoord() + "," + frst.getyCoord() + "," + frst.getzCoord() + ")");
}
}
二等舱
package threedimpoint;
public class Secondpoint {
public static void main(String[] args) {
Point3d secnd = new Point3d();
secnd.setX(2);
secnd.setY(12);
secnd.setZ(24);
System.out.println("(" + secnd.getxCoord() + "," + secnd.getyCoord() + "," + secnd.getzCoord() + ")");
}
}
现在我想创建一个新类,它接受的信息是x,y,z坐标
从一等舱(公共舱第一点)到二等舱(公共舱第二点)
然后用它来计算两点之间的距离
如何在新类中访问该信息?公共静态void main不属于您定义的类,它是java程序的第一个执行点。如果需要访问两个Point3d类,可以在main方法中执行以下操作
public static void main(String[] args) {
Point3d frst = new Point3d();
frst.setX(0);
frst.setY(0);
frst.setZ(0);
System.out.println("(" + frst.getxCoord() + "," + frst.getyCoord() + "," + frst.getzCoord() + ")");
Point3d secnd = new Point3d();
secnd.setX(2);
secnd.setY(12);
secnd.setZ(24);
System.out.println("(" + secnd.getxCoord() + "," + secnd.getyCoord() + "," + secnd.getzCoord() + ")");
}
publicstaticvoidmain不属于您定义的类,它是java程序的第一个执行点。如果需要访问两个Point3d类,可以在main方法中执行以下操作
public static void main(String[] args) {
Point3d frst = new Point3d();
frst.setX(0);
frst.setY(0);
frst.setZ(0);
System.out.println("(" + frst.getxCoord() + "," + frst.getyCoord() + "," + frst.getzCoord() + ")");
Point3d secnd = new Point3d();
secnd.setX(2);
secnd.setY(12);
secnd.setZ(24);
System.out.println("(" + secnd.getxCoord() + "," + secnd.getyCoord() + "," + secnd.getzCoord() + ")");
}
这两个非点“类”只不过是静态主方法的存储库,而这些野兽无法真正以任何有意义的方式组合在一起。如果您想要任何有意义的信息和数据共享,那么这些类应该是真正的OOP兼容类,带有字段,比如haivng Point3D字段,根据需要包含getter和setter方法,以及所需的构造函数和方法
e、 g
也许
public class PointCollection {
private List<Point3d> points = new ArrayList<>();
public void add(Point3d p) {
points.add(p);
}
// ..... methods to get, to iterate through,...
}
公共类点集合{
私有列表点=新的ArrayList();
公共空白添加(点3D p){
增加(p);
}
//…获取的方法,迭代的方法,。。。
}
您的两个非点“类”只不过是静态主方法的存储库,而这些野兽无法真正以任何有意义的方式组合在一起。如果您想要任何有意义的信息和数据共享,那么这些类应该是真正的OOP兼容类,带有字段,比如haivng Point3D字段,根据需要包含getter和setter方法,以及所需的构造函数和方法
e、 g
也许
public class PointCollection {
private List<Point3d> points = new ArrayList<>();
public void add(Point3d p) {
points.add(p);
}
// ..... methods to get, to iterate through,...
}
公共类点集合{
私有列表点=新的ArrayList();
公共空白添加(点3D p){
增加(p);
}
//…获取的方法,迭代的方法,。。。
}
不能有多个主类。你是说这样的事吗
package threedimpoint;
public class testPoint {
public static void main(String[] args) {
Point3d frst = new Point3d();
frst.setX(0);
frst.setY(0);
frst.setZ(0);
Point3d secnd = new Point3d();
secnd.setX(2);
secnd.setY(12);
secnd.setZ(24);
int x = frst.getxCoord() + secnd.getxCoord()
int y = frst.getyCoord() + secnd.getyCoord()
int z = frst.getzCoord() + secnd.getzCoord()
System.out.println("(" + x + "," + y + "," + z + ")");
}
}
不能有多个主类。你是说这样的事吗
package threedimpoint;
public class testPoint {
public static void main(String[] args) {
Point3d frst = new Point3d();
frst.setX(0);
frst.setY(0);
frst.setZ(0);
Point3d secnd = new Point3d();
secnd.setX(2);
secnd.setY(12);
secnd.setZ(24);
int x = frst.getxCoord() + secnd.getxCoord()
int y = frst.getyCoord() + secnd.getyCoord()
int z = frst.getzCoord() + secnd.getzCoord()
System.out.println("(" + x + "," + y + "," + z + ")");
}
}
您的
FirstPoint
和SecondPoint
类实际上根本不需要存在。它们只是Point3D
的对象实例。距离计算可以是Point3D
类中的一种方法
因此:
还要注意toString
实现为点和ORIGIN
常量提供格式化输出
与包含成员变量的“setter”方法相比,这种方法的一个(巨大)优势是
Point3D
是不可变的。这意味着任何传递了Point3D
对象引用的方法都可以依赖于它,而这个值永远不会改变,这使得它们的使用更加简单。理想情况下,您也不应该有“getter”-您可能需要获取单个坐标的所有内容都应该是Point3D
中的一个方法。但是,这在所有情况下都是不可能的。您的FirstPoint
和SecondPoint
类实际上根本不需要存在。它们只是Point3D
的对象实例。距离计算可以是Point3D
类中的一种方法
因此:
还要注意toString
实现为点和ORIGIN
常量提供格式化输出
与包含成员变量的“setter”方法相比,这种方法的一个(巨大)优势是
Point3D
是不可变的。这意味着任何传递了Point3D
对象引用的方法都可以依赖于它,而这个值永远不会改变,这使得它们的使用更加简单。理想情况下,您也不应该有“getter”-您可能需要获取单个坐标的所有内容都应该是Point3D
中的一个方法。但是,这在所有情况下都是不可能的。您不需要每次实例化对象时都创建一个新类。此外,您只需要将publicstaticvoidmain()
作为程序的入口点。这是执行开始的地方,但并不意味着每个类都需要一个
此外,以下是构建Point3d
类的正确方法
public class Point3d {
private double xCoord, yCoord, zCoord;
public Point3D(double x, double y, double z) {
this.xCoord = x;
this.yCoord = y;
this.zCoord = z;
}
public double getX(){return this.xCoord;}
public double getY(){return this.yCoord;}
public double getZ(){return this.zCoord;}
public void setX(x){this.xCoord = x;}
public void setY(y){this.yCoord = y;}
public void setZ(z){this.zCoord = z;}
}
public class FirstPoint {
public static void main(String[] args) {
Point3d frst = new Point3d();
frst.setX(0);
frst.setY(0);
frst.setZ(0);
Point3d secnd = new Point3d();
secnd.setX(2);
secnd.setY(12);
secnd.setZ(24);
double distance = euclidean_distance(frst,secnd);
}
public double euclidean_distance(Point3d a, Point3d b){
return Math.sqrt((a.getX()-b.getX())*(a.getX()-b.getX()) + (a.getY()-b.getY())*(a.getY()-b.getY()) + (a.getZ()-b.getZ())*(a.getZ()-b.getZ()));
}
}
不需要每次实例化对象时都创建一个新类。此外,您只需要将
publicstaticvoidmain()
作为程序的入口点。这是执行开始的地方,但并不意味着每个类都需要一个
此外,以下是构建Point3d
类的正确方法
public class Point3d {
private double xCoord, yCoord, zCoord;
public Point3D(double x, double y, double z) {
this.xCoord = x;
this.yCoord = y;
this.zCoord = z;
}
public double getX(){return this.xCoord;}
public double getY(){return this.yCoord;}
public double getZ(){return this.zCoord;}
public void setX(x){this.xCoord = x;}
public void setY(y){this.yCoord = y;}
public void setZ(z){this.zCoord = z;}
}
public class FirstPoint {
public static void main(String[] args) {
Point3d frst = new Point3d();
frst.setX(0);
frst.setY(0);
frst.setZ(0);
Point3d secnd = new Point3d();
secnd.setX(2);
secnd.setY(12);
secnd.setZ(24);
double distance = euclidean_distance(frst,secnd);
}
public double euclidean_distance(Point3d a, Point3d b){
return Math.sqrt((a.getX()-b.getX())*(a.getX()-b.getX()) + (a.getY()-b.getY())*(a.getY()-b.getY()) + (a.getZ()-b.getZ())*(a.getZ()-b.getZ()));
}
}
如果要计算两点之间的距离,可以在Point3d类中创建函数。例如:
public class Point3d {
private double xCoord;
private double yCoord;
private double zCoord;
public Point3d(double x,double y, double z ){
xCoord = x;
yCoord = y;
zCoord = z;
}
public double calucateDistance(Point3d compareObj)
{
// ......
}
//......
}
然后您只需要创建一个测试类,在测试类中您可以创建Point3d的两个实例,例如:
public class Test{
public static void main(String[] args) {
Point3d first = new Point3d();
first .setX(0);
first .setY(0);
first .setZ(0);
Point3d second = new Point3d();
second.setX(2);
second.setY(12);
second.setZ(24);
double result = first.calucateDistance(second);
}
}
如果要计算两点之间的距离,可以在Point3d类中创建函数。例如:
public class Point3d {
private double xCoord;
private double yCoord;
private double zCoord;
public Point3d(double x,double y, double z ){
xCoord = x;
yCoord = y;
zCoord = z;
}
public double calucateDistance(Point3d compareObj)
{
// ......
}
//......
}
然后您只需要创建一个测试类,在测试类中您可以创建Point3d的两个实例,例如:
public class Test{
public static void main(String[] args) {
Point3d first = new Point3d();
first .setX(0);
first .setY(0);
first .setZ(0);
Point3d second = new Point3d();
second.setX(2);
second.setY(12);
second.setZ(24);
double result = first.calucateDistance(second);
}
}
我不能同意你的说法。您可以有任意数量的具有main方法的类。但是一次只能执行一个。但是,你不能期望同时运行这两个程序来将点值相加。我不能同意你的说法。您可以有任意数量的具有main方法的类。但是一次只能执行一个。但是,您不能期望同时运行这两个来将点值相加。好的,我明白您的意思,现在我将尝试一下。谢谢。好的,我明白你的意思,我现在就试试。谢谢