JAVA 입문 시작

22.11.29 추상 클래스 (메서드)

강준석 2022. 11. 29. 12:32
728x90

부모 클래스 => 자식 클래스.

부모의 클래스를 강제로 자식클래스로 구현.

무족건 써서 써야한다.

(이건 또 뭐야;;)

public void abc();	//코드 끝

예시)

 

package 추상클래스;

public abstract class Shape {

	String type;

	public Shape(String type) {
		
		this.type = type;
	}
	
	abstract double area();
	abstract double length();		//상속 받는 자식클래스는 무적건 무족건 사용해야함
	
	
}
package 추상클래스;

public class Rectangle extends Shape {
   
   int width, height;

   public Rectangle(int width, int height) {
      super("사각형");
      this.width = width;
      this.height = height;
   }
   
   //상속 받은 추상메서드 생성

   @Override
   double area() {
      return width * height;
   }

   @Override
   double length() {
      return 2 * (width + height);
   }

   @Override
   public String toString() {
      return "Shape [type=" + type + ", width=" + width + ", height=" + height + "]";
   }
   
   
   
   

}

 

package 추상클래스;

public class Circle extends Shape{
	
	int r;		//반지름

	public Circle( int r) {
		super("원");
		this.r = r;
		
	}

	@Override		//컴퓨터에게 이건 오버라이딩이라 안내하는 용도
	double area() {
		
		return r*r*Math.PI;		//넓이 구하기
	}

	@Override
	double length() {
		
		return 2*r*Math.PI;	 	//둘레 구하기
	}

	@Override
	public String toString() {
		return "Shap [type =" + type + ", r="+r+"]";
	}
	
	
	
	
	
}
package 추상클래스;

public class ShapeEx {

	public static void main(String[] args) {

		Shape[] shapes = new Shape[2];
		
		shapes[0]=new Circle(10);
		shapes[1]=new Rectangle(5,5);
		
		for(Shape s : shapes) {
			System.out.println(s);
			System.out.println("넓이 : "+s.area()+" 둘레 "+s.length());
		}
	}

}

결과

Shap [type =원, r=10]
넓이 : 314.1592653589793 둘레 62.83185307179586
Shape [type=사각형, width=5, height=5]
넓이 : 25.0 둘레 20.0

 

 

728x90