2016-06-09 2 views
-3

나는 작업중인 웹 사이트에서이 코드를 복사하여 붙여 넣습니다.Java oop - 상속

* A Line composes of two Points - a begin point and an end point. 
*/ 
public class Line { 
// The private instance variables 
Point begin, end; // Object members - instances of the Point class 

// Constructors 
public Line(int x1, int y1, int x2, int y2) { 
    begin = new Point(x1, y1); // Construct the instances declared 
    end = new Point(x2, y2); 
} 
public Line(Point begin, Point end) { 
    this.begin = begin; // The caller constructed the instances 
    this.end = end; 
} 

// The public getter and setter for the private instance variables 
public Point getBegin() { 
    return begin; 
} 
public Point getEnd() { 
    return end; 
} 
public void setBegin(Point begin) { 
    this.begin = begin; 
} 
public void setEnd(Point end) { 
    this.end = end; 
} 

public int getBeginX() { 
    return begin.getX(); // Point's getX() 
} 
public void setBeginX(int x) { 
    begin.setX(x); // Point's setX() 
} 
public int getBeginY() { 
    return begin.getY(); // Point's getY() 
} 
public void setBeginY(int y) { 
    begin.setY(y); // Point's setY() 
} 
public int[] getBeginXY() { 
    return begin.getXY(); // Point's getXY() 
} 
public void setBeginXY(int x, int y) { 
    begin.setXY(x, y); // Point's setXY() 
} 
public int getEndX() { 
    return end.getX(); // Point's getX() 
} 
public void setEndX(int x) { 
    end.setX(x); // Point's setX() 
} 
public int getEndY() { 
    return end.getY(); // Point's getY() 
} 
public void setEndY(int y) { 
    end.setY(y); // Point's setY() 
} 
public int[] getEndXY() { 
    return end.getXY(); // Point's getXY() 
} 
public void setEndXY(int x, int y) { 
    end.setXY(x, y); // Point's setXY() 
} 

// The toString() describe itself 
public String toString() { 
    return "Line[begin=" + begin + ",end=" + end + "]"; 
     // Invoke begin.toString() and end.toString() 
} 

public double getLength() { 
    return begin.distance(end); // Point's distance() 
    } 
} 

그래서 여기에 우리는 우리가 우리가 클래스를 contruct 여기에 참조로 그래서, 거기 생성자와의 .... 클래스 공용 클래스 점과 최초의 생성자 공공 라인에 공용 클래스 라인

에 있습니다 그것이 사용 된 방법이나 논리에 대한 잘못된 점에 대해서는 아무런 문제가 없습니다.

또한이 방법이 있습니다. public Point ... 이것은 Point 클래스가 아니므로 여기서이 메서드를 사용할 수 있습니다.

포인트가 일종의 역전 류처럼 작동하기 때문에 그 방법에서 우리는 시작하고 시작하지 않아도된다는 점이 포인트 클래스이며, 포인트 클래스로 정의 된 객체입니다. 그래서 나는 그것을 얻을 수있는 유일한 방법입니다. 하지만 일단 우리가하면

public static void main(String[] args) { 
    Line l1 = new Line(new Point(7,8), new Point(2,5)); 

생성자가 여기에서 작동하기 시작합니다. 그래서 결국 새로운 라인이 형성됩니다. 생성자에는

return line; 

과 같은 것이 없거나 반환 선이 있습니다. 그러나 우리는 그것을 볼 수 없는가? 나는 모른다. 그러나 포인트로 반환 형식을 취하는 방법에 내가 여기에 논리를 이해하는 데 문제가하는

return point; 

하지만

생성자에서
return x; 

있다.

과 방법으로 우리는이 방법으로이 방법

public Point getBegin() { 
    return begin; 
} 

혜택을 누릴 수 있습니다 : 우리가 그런 일을 할 그냥 시작하지 않는 경우

l1.getBegin().SOMEPOINTMETHOD; 

하지만

l1.getBegin(); 

어떤 결과물을 얻을 수 있습니까? 출력 유형을 가리키고 있지만, 포인트는 객체이기 때문에 우리는 객체의 인스턴스를 입력하지 않았으므로 아무 것도 얻지 못할 것입니다. 이클립스는이 경우 이상한 오류를 준다.

나는 너무 오랜 시간이 걸렸으나 여기서 논리를 이해하려고 노력하고 있음을 안다. 나는 너무 어리 석고 당장 판단하지 말아라. 미안하다. 주제)

+0

그러나 반환 유형과 같은 것이 있으므로 'public Point xxx'는 실제로는 일반 메소드이고 생성자는 아닙니다. 메소드'public int getSize() {...}'는 리턴 타입이'int' 인 일시적인 메소드가 될 것입니다. – SomeJavaGuy

+0

"하지만 생성자에는 반환 선과 같은 것이 없습니다." - 생성자에 반환 유형이 없습니다. 이런 식으로 생각해 봅시다. 생성자는 이미 명시 적으로 반환 할 필요가없는 클래스의 인스턴스를 이미 생성했기 때문입니다. – Mamun

+0

만약 내가 당신이라면,이 기본 Java 읽기 (예 : https://docs.oracle.com/javase/tutorial/java/concepts/object.html) 중 일부를 먼저 살펴 보겠습니다. points :)> https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8 Java를 배우는 것에 대해 진지하게 생각하고 있다면, 저를 신뢰하십시오. 아무리 좋은 독서를해도 많은 도움이됩니다. 그래서 신선한 것을 시작할지도 모릅니다 :)! – Filip

답변

2

생성자는 클래스 유형의 인스턴스를 암시 적으로 작성하는 특별한 종류의 (클래스 바인딩 된) 메소드입니다. 이 인스턴스를 검색하려면 new 키워드를 사용해야합니다.

공백이 아닌 메서드를 사용하는 경우 메서드 본문이 실행되고 결국 Returntype 유형의 개체가 반환됩니다. 반환 된 객체로 무언가를 수행하는 것은 프로그램 (예 : 프로그램)에 따라 다르지만 무시할 수는 있습니다.

그리고 무엇보다도 : 이것은 상속과는 아무런 관련이 없습니다!

+0

내 주제의 제목이 잘못 되었음에도 불구하고,이 주변 사람들 모두가 무시하고 도왔습니다. 고맙습니다 :) – Xenidia