2014-02-24 3 views
0

이 프로그램을 실행하려면 "derp"메서드를 Shape 클래스에서 직사각형 클래스로 가져와야합니다. 그러나 나 자신이나 교사가 무엇을 시도하든, 우리는 그것을 작동하게 만들 수 없습니다. 내가 실제로 성취해야 할 것은 Shape의 "derp"메소드가 Rectangle에서 작동 할 수 있어야한다는 것입니다. 그러나이 메서드를 가져 오는 작업으로 인해 우리는 어려움을 겪었습니다.Java에서 클래스 가져 오기?

public abstract class shape{ 

    shape(){ 

    } 
    shape(int length, int width, int thing){ 
     length = 0; 
     width = 0; 
    } 
    public int derp(int thing, int length) { 
     thing = (int) Math.random() * 9 ; 
     length = thing; 
     return length; 
    } 
} 

public class Rectangle extends shape { 

public static void main(String args[]) 
{ 
     shape.getLength(Length, Width); 
      //r1 will take all default value 
Rectangle r1 = Rectangle();   

//r2 will take all supplied value 
Rectangle r2 = Rectangle(4, 5); 

//r3 will take supplied length. width will take default value 
Rectangle r3 = Rectangle(10);  

//r4 will take the same value of r2 
Rectangle r4= r2;   

//the rest of the code 
} 
private static void Rectangle(int width2, int length2) { 
    // TODO Auto-generated method stub 

} 

}

+0

왜 모양이 사각형을 연장 하는가? 거꾸로 보입니다. 얼핏보기에 – FatalError

+0

은 직사각형처럼 보입니다. 다른 모양이 아닌 모양을 확장해야합니다. – markg

+0

그 점을 지적 해 주셔서 감사합니다. 이제는 Rectangle 메서드 내에서 Shape에서 "Derp"메서드를 사용해야합니다. 그게 가능하니? – user3348422

답변

0
  1. Rectangle.derp(int thing, int length, int width);

    이 메소드 선언 아니다. 이 구문은 모두 잘못되었습니다. 사용할 수있는 방법으로 derp을 신고하려고합니까, 아니면 derp으로 전화를하려고하십니까? 독자로서 그것은 불분명합니다.

  2. 논리적으로 RectangleShape으로 확장해야합니다. 당신은 단지 다른 값으로 매개 변수를 지정하고

    shape(int length, int width, int thing){ 
        length = 0; 
        width = 0; 
    } 
    

    :

  3. 이 아무것도하지 않습니다.

잠깐 시간을내어 Java 구문을 배우십시오.

+0

내가해야 할 일은 Rectangle 내부의 Shape에서 "Derp"메서드를 사용하기 만하면됩니다. Derp은 나머지 코드와 함께 사용할 가치가 있습니다. 그 특정 방법을 작동시켜 나머지 프로그램을 작성할 수 있도록해야합니다. – user3348422

+0

"불행히도"당신에게 자바는 컴파일 된 언어입니다. 계속 진행하기 전에 * 모든 * 오류 (그러나 반드시 경고는 아님)를 고쳐야 할 것입니다. 그래서 구문을 익히는 데 시간을 투자해야합니다. –

0

RectangleShape으로 확장해야합니다. 당신이 상속을 반대한다처럼

또한 그것은 나에게 보이는이 줄

Rectangle.derp(int thing, int length, int width); 
+0

좋아. 확장이 수정되어 선이 제거되었습니다. Shape에서 Rectangle로 메소드를 가져 오는 방법에 대한 아이디어가 있습니까? – user3348422

2

를 제거합니다. 그것은 사각형이 사각형 때문에, 모양을 확장해야하는 모양

EDIT 1 당신이 상속을 반대 할 때 사각형의 DERP 메소드를 호출 할 수 있어야합니다.

RectAngle r = new Rectangle(); 
    r.derp(thing, length); 

편집 2 당신은 정말 중 하나를 당신의 형상 인스턴스로 변수를 하드 코딩해서는 안된다. 그것은 정말 유용한 방법이 아닙니다. 당신이 그것을 할 수있는 두 가지 방법이 있습니다. 어느 것이 든 셰이프 클래스에는 보호 된 변수가 있습니다 (상속됨을 의미 함). 그럼 당신은 클래스가 같아야 모양 :

public abstract class shape{ 

    protected int length; 
    protected int width; 

    shape(){ 

    } 

    shape(int length, int width){ 
     this.lenght = length; 
     this.width = width; 
    } 

    public int derp() { 
     int thing = (int) Math.random() * 9 ; 
     length = thing; 
     return length; 
    } 
} 

아니면 싶어 수업이 큰 변화를 만들 해달라고하면 당신은

r.derp(1, 100); 

같은 방법으로 직접 매개 변수를 전달할 수 있습니다하지만 난에 동의 당신은 좀 더 자바 구문을 배워야한다. 이것은 당신의 전화를하는 아주 이상한 방법입니다 :).

+0

좋아. 그렇다면 Rectangle 내부에서 실행중인 derp 메소드를 사용하여 Shape의 기존 길이 및 값을 어떻게 사용합니까? – user3348422

+0

정말 고마워요! Rectangle 클래스는 마침내 메서드를 인식 할 수 있습니다. Rectangle에서 메서드를 마무리 할 수있어서 실제로 작동합니다! – user3348422

0

다른 클래스로 메소드를 가져 오지 마십시오. 논리적으로 Rectangle 모양을 확장하려면 (명명 규칙에 따라 Shape이어야합니다), 다른 방법을 사용하고 있습니다.

그러나 코드에는 이해할 수없는 많은 것들이 있으므로 명확하게 영어로 설명하려고 할 수 있습니다.

+0

내가 할 일은 모양 안에있는 "derp"메서드를 가져 와서 Shape 메서드를 유지하면서 Rectangle 내부에서 사용하는 것뿐입니다. – user3348422

0

수퍼 클래스에서 하위 클래스의 메서드에 액세스하려고하기 때문에이 방법이 작동하지 않을 수 있습니다. 수퍼 클래스는 자식을 모른다. 하위 클래스의 수퍼 클래스 메소드를 사용하거나 하위 클래스의 메소드를 수퍼 클래스에 배치하여 사용할 수 있습니다.

0

좋아요. 당신의 클래스 Shape는 Rectangle을 확장합니다 ... 우리는 그 특별한 논리를 무시할 것입니다.

Rectangle.derp(int thing, int length, int width);// wrong 

먼저 call 내에서 매개 변수를 선언하여 메소드 derp를 호출 할 수 없습니다. 예를 들어 다음과 같이 호출 할 수 있습니다.

int thing = 1, length = 2, width = 3; 
Rectangle.derp(thing, length, width);//with condition that derp method 
//declaration to be public static 

Rectangle r1 = Rectangle();//wrong 

이는 클래스 생성자입니다. 클래스를 싱글 톤으로 만들고 싶지 않으면 공개로 선언합니다.하지만 나는 의심 스럽습니다. 이것을 다음과 같이 '새로운'키 워드로 인스턴스화합니다.

Rectangle r1 = new Rectangle(); 

1 및 2 매개 변수가있는 것과 같습니다. 여기 Rectangle 클래스에 대한

전체 코드 :

public class Rectangle { 
    public Rectangle(int width2, int length2) { 
     // TODO: Process width and length here 
    } 

    public Rectangle() { 
     // TODO: process default values here 
    } 

    public Rectangle(int value) { 
     // TODO: Process value here 
    } 

    public static void derp(int thing, int length, int width) { 

    } 

    public static void main(String args[]) { 

     int thing = 1, length = 2, width = 3; 
     Rectangle.derp(thing, length, width); 

     // r1 will take all default value 
     Rectangle r1 = new Rectangle(); 

     // r2 will take all supplied value 
     Rectangle r2 = new Rectangle(4, 5); 

     // r3 will take supplied length. width will take default value 
     Rectangle r3 = new Rectangle(10); 

     // r4 will take the same value of r2 
     Rectangle r4 = r2; 

     // the rest of the code 
    } 

}