Circle도형 클래스와 Rectangle도형 클래스에 double calcArea()메서드를 오버라이드 생성해준다.
기본생성자에 지역변수를 만들고 오버라이드에 공식을 리턴값으로 지정해준다.
(메인에서 오버라이드 호출하면 원, 사각형 상관없이 바로 계산될 수 있게)
( 부모클래스 Shape에 초기값을 설정하는 Point를 호출 )
Circle
public class Circle extends Shape {
double r;
public Circle() {
}
public Circle(double r) {
super();
this.r = r;
}
//무조건.
@Override
double calcArea() {
return (r * r * Math.PI);//반지름 값으로 수정
}
}
Rectangle
public class Rectangle extends Shape {
int width;// - 폭
int height;// - 높이
public Rectangle() {
this(0,0);//초기값 설정
}
public Rectangle(int width, int height) {
super();
this.width = width;
this.height = height;
}
public boolean isSquare() {
boolean square;
if (width == height) {
return true;
}
return false;
}
@Override
double calcArea() {
// TODO Auto-generated method stub
return width * height;//넓이로 수정
}
}
Point
public class Point {
int x;
int y;
Point() {
this(0,0);//초기값 셋팅.
}
Point(int x, int y) {
this.x=x;
this.y=y;
}
public String toString() {
return "["+x+","+y+"]";
}
}
Shape
public abstract class Shape {
Point p;
Shape() {
this(new Point(0,0));
}//아래 메서드로 들어감
Shape(Point p) {
this.p = p;
}
abstract double calcArea(); // 도형의 면적을 계산해서 반환하는 메서드
Point getPosition() {
return p;
}
void setPosition(Point p) {
this.p = p;
}
}
Main
public class mainClass {
public static void main(String[] args) {
Shape circle = new Circle(3.0);
System.out.println(circle.calcArea());
//->28.274333882308138
Shape rectangle = new Rectangle(23,34);
System.out.println(rectangle.calcArea());//->782.0
System.out.println("정사각형 = "+ ((Rectangle)rectangle).isSquare());//->정사각형 = false
}
}
'JAVA > 기초 프로그래밍' 카테고리의 다른 글
팩토리// 무기, 폭탄 사용게임 (0) | 2020.06.11 |
---|---|
함수//클래스에서 오버라이딩하여 변수 값 비교하기 (*헷깔림) (0) | 2020.06.09 |
ArrayList 와 LinkedList (0) | 2020.06.09 |
interface//인터페이스 NameCard (0) | 2020.06.09 |
야구선수 등록 프로그램(답안) (0) | 2020.06.05 |