2015-04-09 3 views
-8

У меня есть класс Point (в Java, функции: int x, int y) с простым конструктором: public Point {this.x = x; this.y = y;}, x & y - координаты точки. Работает. В том же пакете я добавляю новый класс Segment (функции: Point left, Point right) с конструктором: public Segment(int leftX,int leftY,int rightX,int rightY) {...} (четыре координаты слева & правых точек). Я пытаюсь создать этот конструктор, но это не работает. Что должно быть вместо {...}?Java new constructor не работает

Мой код:

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) {} 
} 
+3

И Какую ошибку вы получаете? –

+0

общественный класс Point1 { \t private int _x, _y; \t public Point1 (int x, int y) \t { \t \t _x = x; \t \t _y = y; \t} –

+0

Если это весь класс, вам не хватает '}', который закрывает определение класса. –

ответ

0

Вопрос не в идеальной форме и не имеют основного кода, так что я должен был сделать некоторые предположения с тем, что была размещена


java.awt.Point посмотрел лучший вариант, поэтому я использовал его, сделал явное упоминание о пакете, чтобы избежать путаницы

Точка общественного класса расширяет Point2D реализует Serializable

Точки, представляющего местоположение в (х, у) координатного пространства, указанное в целочисленной точности.

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 [х = 1, у = 0] & java.awt.Point [х = 2, y = 1]

+0

Спасибо за все. Я забыл создать новые объекты и дал исключение: (( –

0

В вашем классе может быть несколько конструкторов, в зависимости от того, как вы собираетесь его создавать. Например, здесь я определяю 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)); 
    }  
} 
Смежные вопросы