<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()도 가능)
▶하지만, 반대로 부모클래스에서는 자식클래스에있는 메소드를 불러올 수 없다
'JAVA > 13_abstract' 카테고리의 다른 글
객체생성 -> 1)각각클래스 이용 2)부모 추상 클래스 이용 3)배열 이용 (0) | 2021.01.26 |
---|---|
abstract - <<1.하나의 페이지에 작성>> (0) | 2021.01.21 |