본문 바로가기

콩's EDUCATION/콩's JAVA_RUN

추상(abstarct) 메소드

추상 메소드 구현


 

 

// 추상메소드가 사용된 클래스는 반드시 abstract 써야 한다.

abstract class Shape{
 public abstract void area();
 public abstract void circum();
}

class Circle extends Shape{
 int r;
 final double pi = 3.14; 

// 생성자 초기화 해야한다.
 public Circle(int r) {
  this.r = r;
 }
// abstract 사용한 메소드(area, circum)는 반드시 overriding을 해줘야 한다.

 @Override

 public void area() {
  System.out.println("반지름이 "+r+" 인 원의 면적="+(r*r*pi));
 }
 @Override
 public void circum() { 
  System.out.println("반지름이 "+r+" 인 원의 둘레="+(2*r*pi));
 }
 
}
class Rectangle extends Shape{
 int width; // 가로
 int height; // 세로

 // 생성자 초기화 해야한다.
 public Rectangle(int width, int height) {
  super();
  this.width = width;
  this.height = height;
 }

 

// abstract 사용한 메소드(area, circum)는 반드시 overriding을 해줘야 한다.
 @Override
 public void area() {
  System.out.println("가로가 "+width+" 세로가 "+height+" 인 사각형의 넓이="+(width*height)); 
 }
 @Override
 public void circum() {
  System.out.println("가로가 "+width+" 세로가 "+height+" 인 사각형의 둘레="+(2*(width+height))); 
 }
}

public class AbstarctTest {
 public static void main(String[] args) {


 // 명령형 매개변수 circle 5 입력
 // 반지름이 5인 원 


 if(args.length == 2 && args[0].equalsIgnoreCase("circle")){
  Circle c = new Circle(Integer.parseInt(args[1]));
  c.area(); // 면적
  c.circum(); // 원면적
 }

 // 명령형 매개변수 rect 5 6 입력
 // 가로 5 세로 6인 Rectangele 객체 생성
 
 else if(args.length == 3 && args[0].equalsIgnoreCase("rect")){
  Rectangle r = new Rectangle(
    Integer.parseInt(args[1]),
    Integer.parseInt(args[2]));
  r.area(); // 면적
  r.circum(); // 원면적
 }
 
 // 공통적 area() ; 면적 / circum() ; 둘레 호출
 // 실행할 수 있도록 강제적 구현
 }
}

 

 

AbstarctTest.java