<Shape.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
package ex04.Abstract2;
 
public abstract class Shape { //abstract class, Super class
    double result = 0;
 
    public abstract double calc(); // =>추상메소드
    public abstract void draw();
 
    public void show() { // =>일반메소드 (추상 클래스 안에는 일반메소드도 가질 수 있다)
        System.out.println("Super class Shape");
    }
}
 
cs

<Circle.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package ex04.Abstract2;
 
public class Circle extends Shape { //Sub class
 
    double r = 5.0;
 
    @Override
    public double calc() {
        // TODO Auto-generated method stub
        result = r * r * Math.PI;
        return result;
    }
 
    @Override
    public void draw() {
        // TODO Auto-generated method stub
        calc();
        System.out.println("원의 넓이: " + result + "인 원을 그렸습니다");
    }
 
}
 
cs

<Rectangle.java>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package ex04.Abstract2;
 
import java.util.Scanner;
 
public class Rectangle extends Shape {
 
    @Override
    public double calc() {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.print("사각형의 가로길이 입력 => ");
        int w = sc.nextInt();
        System.out.print("사각형의 세로길이 입력 => ");
        int h = sc.nextInt();
 
        result = w * h;
        return result;
    }
 
    @Override
    public void draw() {
        // TODO Auto-generated method stub
        calc();
        System.out.println("사각형의 넓이: " + result + "인 사각형을 그렸습니다");
    }
 
}
 
cs

<Triangle.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package ex04.Abstract2;
 
public class Triangle extends Shape {
 
    int w = 10, h = 20;
 
    @Override
    public double calc() {
        // TODO Auto-generated method stub
        result = (w * h) / 2;
        return result;
    }
 
    @Override
    public void draw() {
        // TODO Auto-generated method stub
        calc();
        System.out.println("삼각형의 넓이: " + result + "인 삼각형을 그렸습니다");
    }
 
}
 
cs

<MainEntry.java>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package ex04.Abstract2;
//<<<<<<<<<<2.이클립스 기반으로 작성>>>>>>>>>>
import java.util.Scanner;
 
public class MainEntry {
    public static void main(String[] args) {
//        Shape t;
        
        Scanner sc = new Scanner(System.in);
        System.out.println("<원하는 도형을 선택 하세요>\n 1.circle \t2.triangle \t3.rectangle");
    
        //자식클래스 객체를 생성해서 이를 이용하여 부모클래스에있는 메소드도 부를수 있다(c.show()도 가능)
        switch(sc.nextInt()) {
        case 1 :  Circle c = new Circle();  c.draw();  break
        case 2 :  Triangle t = new Triangle();  t.draw();  break;
        case 3 :  Rectangle r = new Rectangle();   r.draw();  break;
        }
    }
 
}
 
cs

<원하는 도형을 선택 하세요>
 1.circle  2.triangle  3.rectangle
1
원의 넓이: 78.53981633974483인 원을 그렸습니다


▶자식클래스 객체를 생성해서 이를 이용하여 부모클래스에있는 메소드도 부를수 있다(c.show()도 가능)

▶하지만, 반대로 부모클래스에서는 자식클래스에있는 메소드를 불러올 수 없다

+ Recent posts