// Shape
package ch09_quiz;
/*
* Shape interface 를 상속받은 Rectangle(사각형), Circle(원) class 를 정의하고,
* ShapeTest class 에서 Shape 변수를 사용해서 다형성을 구현한 코드를 작성하세요
*/
public interface Shape {
public double area(); // 도형 넓이 계산
public void drawing(); // 도형 그리기
}
--------------------------------------------------------------------------------
// Rectangle
package ch09_quiz;
public class Rectangle implements Shape{
private double width; // 가로 길이
private double length; // 세로 길이
// 생성자 생성.
public Rectangle(double width, double length) {
this.width = width;
this.length = length;
}
@Shape_Override
public double area() {
return width * length ;
}
@Shape_Override
public void drawing() {
System.out.println('ㅁ');
}
}
--------------------------------------------------------------------------------
// Circle
package ch09_quiz;
public class Circle implements Shape{
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return (3.1415926536)*radius*radius;
}
@Override
public void drawing() {
System.out.println('O');
}
}
--------------------------------------------------------------------------------
// ShapeTest == main
package ch09_quiz;
import java.util.Scanner;
public class ShapeTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Shape sp = null;
System.out.print("도형 타입을 입력해주세요. 1.사각형 2.원 > ");
int type = sc.nextInt();
switch(type) {
case 1:
System.out.print("가로길이를 입력해 주세요 > ");
double width = sc.nextDouble();
System.out.print("세로길이를 입력해 주세요 > ");
double length = sc.nextDouble();
sp = new Rectangle(width, length); // sp 부모 객체에 Rectangle 자식 개체 대입.
System.out.println("사각형 넓이 : " + sp.area());
break;
case 2:
System.out.print("반지름을 입력해 주세요 > ");
double radius = sc.nextDouble();
sp = new Circle(radius); // sp 부모 객체에 Rectangle 자식 개체 대입.
System.out.println("원 넓이 : " + sp.area());
break;
default:
System.out.println("도형 선택 오류.");
}
if(sp != null) {
sp.drawing();
}
sc.close();
}
}