【问题标题】:Java new constructor not workingJava新构造函数不起作用
【发布时间】:2015-06-14 09:57:54
【问题描述】:

我有带有简单构造函数的 Point 类(在 Java 中,特征:int x,int y):public Point {this.x = x; this.y = y;}, x & y - 点的坐标。它正在工作。在同一个包中,我添加了带有构造函数的新类 Segment(特征:左点、右点):public Segment(int leftX,int leftY,int rightX,int rightY) {...}(左右点的四个坐标)。我尝试创建这个构造函数,但它不起作用。必须用什么代替 {...}?

我的代码:

class Point1 {
    private final int _x, _y;

    public Point1(int x, int y) {
        _x = x;
        _y = y;
    }
}

class Segment {
    private Point1 _poLeft, _poRight;

    public Segment(int leftX, int leftY, int rightX, int rightY) {}
}

【问题讨论】:

  • 你遇到了什么错误?
  • 公共类 Point1 { private int _x, _y;公共 Point1(int x, int y) { _x = x; _y = y; }
  • 如果这是整个班级,您将缺少一个关闭班级定义的}
  • @IgalRozman 请使用问题下方的编辑按钮添加所需的详细信息 - cmets 不是一个好地方
  • @IgalRozman - 请将您的代码添加到 question 本身而不是 cmets

标签: java


【解决方案1】:

问题不是完美的形式并且缺少主要代码,所以我不得不对发布的内容做出一些假设


java.awt.Point 看起来是一个更好的选择,所以我使用了它,明确提到了包以避免混淆

公共课点 扩展 Point2D 实现可序列化

表示 (x,y) 坐标空间中位置的点,以整数精度指定

class SegmentofPoints {
    java.awt.Point aPoint;
    java.awt.Point bPoint;

    public SegmentofPoints(Point aPoint, Point bPoint) {
        this.aPoint = aPoint;
        this.bPoint = bPoint;
    }
}

public class Demo {
    public static void main(String[] args) {

        java.awt.Point aPoint;
        java.awt.Point bPoint;

        aPoint = new Point(1, 0);
        bPoint = new Point(2, 1);

        SegmentofPoints segment = new SegmentofPoints(aPoint, bPoint);
        System.out.println(segment.aPoint.toString() + " & "
                + segment.bPoint.toString());
    }
}

输出

java.awt.Point[x=1,y=0] & java.awt.Point[x=2,y=1]

【讨论】:

  • 谢谢大家。我忘了创建新对象并给出了异常:((
【解决方案2】:

您的类中可以有多个构造函数,具体取决于您打算如何构建它。例如,在这里我定义了 2 个构造函数,一个来自坐标,另一个来自已经存在的 Point 实例:

public class Segment { 
   private Point1 left, right; 

   public Segment(int leftX, int leftY, int rightX, int rightY) {
      left = new Point1(leftX, leftY);
      right = new Point1(rightX, rightY);
   }

   public Segment(Point1 left, Point1 right) {
      this.left = left;
      this.right = right;
   }
}

在 Java 中,您可以从另一个构造函数调用构造函数。这有助于保持课堂的一致性。上面的代码是:

public class Segment { 
   private Point1 left, right; 

   public Segment(Point1 left, Point1 right) {
      this.left = left;
      this.right = right;
   }

   public Segment(int leftX, int leftY, int rightX, int rightY) {
      // call the constructor above with freshly created Points
      this(new Point1(leftX, leftY), new Point1(rightX, rightY));
   }    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多