2014-03-28 3 views
0

상속 및 다형성으로 작업하고 있습니다. 필요한 포인트를 표시하는 대신이 출력 만 표시됩니다.예기치 않은 출력 NULL

그러나 인쇄 지점 만 제대로 작동합니다. 인쇄 라인이 문제를 만듭니다.

출력 : 라인이 null 널

package serial; 

import java.io.*; 

class Point 
{ 
    private int x,y; 
    Point(int x,int y) 
    { 
     this.x = x; 
     this.y = y; 
    } 
    int getX() 
    { 
     return x; 
    } 
    int getY() 
    { 
     return y; 
    } 
    void setX(int x) 
    { 
     this.x = x; 
    } 
    void setY(int y) 
    { 
     this.y = y; 
    } 
    public String toString() 
    { 

     //String s = "Points joining line are ("+p1.getX()+","+p1.getY()+") and ("+p2.getX()+","+p2.getY()+")";  
     return "(" + x + "," + y + ")"; 
    } 
} 

class Line 
{ 
    private Point p1, p2; 
    Line() 
    { 

    } 
    Line(Point p1, Point p2) 
    { 
     p1 = new Point(2,2); 
     p2 = new Point(3,3); 
    } 
    void setP1(Point p1) 
    { 
     p1.setX(2); 
     p1.setY(2); 
    } 
    Point getP1() 
    { 
     return p1; 
    } 
    void setP2(Point p2) 
    { 
     p2.setX(3); 
     p2.setY(3); 
    } 
    Point getP2() 
    { 
     return p2; 
    } 
    public String toString() 
    { 
     String str; 
     str = "line joining "+this.p1+" "+this.p2+""; 
     return str;  

    } 
} 
public class chumma { 
    public static void main(String args[]) 
    { 
     Point p1 = new Point(2,2); 
     Point p2 = new Point(3,3); 
     Line l1 = new Line(p1,p2); 
     //l1.setP1(p1); 
     //l1.setP2(p2); 
     System.out.println(l1); 

    } 

} 

답변

0

귀하의 consturctor은 다음과 같아야합니다

Line(Point p1, Point p2) 
{ 
    this.p1 = p1; 
    this.p2 = p2; 
} 

실수는 멤버 변수하지만 멤버 변수를 숨기고 매개 변수를 할당하지 않는 것입니다.

this keyword을 사용하면 클래스 멤버를 명시 적으로 지정할 수 있습니다.

5

귀하의 생성자에 합류은 로컬 참조 p1p2 대신 인스턴스 변수를 할당하는 재 할당. 인스턴스 변수가 지정되지 않았기 때문에 Java는 기본값 인 null을 제공합니다.

this.을 추가하여 인스턴스 변수를 참조하십시오.

Line(Point p1, Point p2) 
{ 
    this.p1 = p1; 
    this.p2 = p2; 
} 

또한 arg가없는 생성자의 변수에 무언가를 할당하려고합니다.

+0

어 ... 감사합니다. 그건 내 편이 멍청한 실수 였어. 나는주의를 기울이지 않았다. – Sam