본문 바로가기

JAVA/기초 프로그래밍

함수//상속//도형면적 반환

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
	}
}