2017-09-15 2 views
-1

도형의 영역과 둘레를 계산하는 할당이 있습니다. 하위 클래스의 하위 클래스를 반환하십시오.

슈퍼 클래스 :

public abstract class Shape implements Serializable { 
    private static final long serialVersionUID = -1231855623100981927L; 

    public abstract boolean draw(); 
    public abstract String area(); 
    public abstract String perimeter(); 
    public abstract String characteristic(); 
} 

사각형 클래스 :

public class Rectangle extends Shape { 

    private double x; 
    private double y; 

    public Rectangle() {} 

    public Rectangle(double x, double y) { 
     this.x = x; 
     this.y = y; 
    } 
} 

광장 클래스 :

public class Square extends Rectangle { 

    private double x; 

    public Square() {} 

    public Square(double side) {  
     super(side, side); 
     this.x = side; 
    } 

    public Square square(double side){ 
     this.x = side; 
     return this; 
    } 
} 

Main 클래스 :

Shape rec = new Rectangle(); 

원하는 것은 사각형의 높이와 너비가 동일 할 때 Rectangle 클래스 대신 Square 클래스를 반환합니다. 그게 내가 원하는 전부 야.

+0

혼자서 시험해 보셨습니까? – nullpointer

+0

그게 무슨 소리 죠? 나는 벌써 노력했다. –

+0

@tima haha ​​newbie 여기에 –

답변

0

사각형을 만들면 사각형이나 그 밖의 사각형으로 바꿀 수 없습니다. factory을 사용할 수 있습니다. 팩토리는, 당신의 경우 너비와 높이를 취할 메소드가있는 클래스의 인스턴스가 될 것입니다. 동등한 경우 new Square(x)을 반환하고 동등하지 않을 경우 new Rectangle(x, y)을 반환합니다. System.in readLine 호출을 응용 프로그램 진입 점 (아마도 main 메쏘드)으로 옮겨야하고 거기에서 팩토리 메소드가 호출되어야합니다.

관련 문제