用Java创建对象

时间:2010-10-15 01:46:28

标签: java object

我有以下课程:

class Position {

        private double x,y;
        private int id;

        private static int count=0; //counts number of times a Position object has been created

        public Position (double initX, double initY) {
            x=initX;
            y=initY;
            id=count;
            count++;
        }

        public Position (Position a) {
            id=count;
            count++;
            x=a.x;
            y=a.y;
        }

我现在想在另一个.java文件中创建一个Position对象。我该怎么办?我不会只使用Position x=new Position;吗?多数民众赞成没有用。我是否必须将位置类导入文件?我也试过了,没有用。不会让我导入。我的文件位于默认文件夹中。

这是我想要使用它的地方。我甚至不确定我是否正确阅读说明书。这是他们想要的吗?要将数组的每个元素初始化为新的位置对象吗?

/**
     * Returns an array of num positions. Each position is initialized to a random
     * (x,y) position.
     * if num is less than zero, just return an empty array of length 0.
     * 
     * @param num
     *            number of positions to create
     * @return array of newly minted Points
     */
 public int[] randomPos(int[] a) {
     int numPositions=Position.getNumPositionsCreated();
     int[] posArr=new int[numPositions];
     int x,y;
     for (int i=0; i<numPositions;i++)
         Position rand = new Position(x,y);
         //

6 个答案:

答案 0 :(得分:4)

您需要调用构造函数

Position x = new Position(2.0,2.0);

由于你的一个构造函数将两个double作为参数,我以这些为例。

或者,您可以通过传入另一个Position对象来创建新的Position对象,

Position otherX = new Position(new Position(2.0,2.0)); 
// or combining our above example assuming that x is already instantiated
Position otherX = new Position(x);

此外,如果您不确定,实例化声明之间存在差异!

实例化:

Position posX = new Position(1.0, 4.0);

现在,posXPosition对象的 实例 ,因为我们通过调用构造函数来构造对象。

声明:

Position posX;

请注意,posX变量声明Position个对象,但尚未实例化,因此posX会有一个null参考。

更新

实际上没有为你做功课,因为你不会那样学习。我可以告诉你,到目前为止你所拥有的内容以及上面javadoc中列出的内容并不一致。另外,由于编写javadoc的方式,很难遵循,因此让我尝试为你清理它并让你做其余的事,

/* Returns an array of n Positions. Each Position is initialized to a random
 * (x,y) position.
 * if n is less than zero, just return an empty array of length 0.
 * 
 * @param n
 *     number of Positions to create
 * @return array of newly created Positions
 */

现在我们可以分解那个javadoc,所以让我们找出我们所知道的东西。

  • 我们传递一个参数n,表示Positions数组应该有多大。
  • 我们需要检查n是否等于0,如果是,我们会返回一个空的Position数组。
  • 每个Position对象都将实例化,其中包含随机xy值。
  • 我们知道我们需要返回Position数组。

这应该让你开始,我相信你可以弄明白其余的。

答案 1 :(得分:1)

Position x = new Position(1.0, 2.0);

例如。你现在的方式是缺少方法参数。

答案 2 :(得分:1)

Position x = new Position(1d,2d);

您需要传递构造函数参数。由于您在Position类上定义了2个构造函数,因此必须使用其中一个。在你的课上放一个什么都不做的构造函数通常不是一个坏主意。像

Postion () {}

或在你的情况下

Position () {
   Position.static++;
}

因为你在数。请注意,您应该静态引用静态成员。

答案 3 :(得分:1)

当你调用new时,不要忘记传入构造函数的括号和参数,例如:

Position p = new Position(x, y);

根据其他类的位置,您可能还需要将Position设置为公共类(看起来您使用的是package-private的默认可见性。)

另请注意,必须首先初始化x和y,

答案 4 :(得分:1)

你的构造函数需要参数,所以你必须提供一些参数。

Position p = new Position(1.0, -2.0);

如果你想创建一个没有参数的,你需要添加一个零参数构造函数。

public Position() {
}

然后通过执行Position p = new Position()调用(在不传递参数时需要括号)

如果没有定义任何构造函数,java会自动创建一个隐含的零参数构造函数,但是一旦定义了不同的构造函数,就必须明确定义一个零参数构造函数来构造一个。

如果您的两个类都在默认包中,则不需要导入任何内容。

答案 5 :(得分:1)

Java已经有了一个Point类。对你来说这可能有点过头了,但我会提到它。

http://download-llnw.oracle.com/javase/6/docs/api/java/awt/geom/Point2D.html