언어/Java
기초 #10. 추상 클래스 Shape (추상클래스 예제편)
뭉지(moonz)
2020. 9. 1. 16:32
반응형
▶추상클래스에는 추상메서드와 일반 메서드 둘다 정의될 수 있고,
▶추상메서드를 정의할 때는 블록 구현이 없는 것이 특징이다.
1. 추상 클래스 Shape 코드와 상속받는 두 클래스 Rect, Tri
public abstract class Shape {
double area; //만약 final static double area;로 선언한다면 하위클래스에서 사용하지 못함.
public abstract void draw(double w, double h); //블록{}이 구현되지않은 추상메서드! 무조건 재정의.
final static void function() {
System.out.println("추상 클래스의 정적 메서드입니다. 재정의 못해요.");
}
}
class Rect extends Shape {
public void draw(double w, double h) {
System.out.println("직사각형 점 4개 연결");
area = w*h;
System.out.println("넓이: " + area);
}
}
class Tri extends Shape {
public void draw(double w, double h) {
System.out.println("삼각형 점 3개 연결");
area=(w*h)/2;
System.out.println("넓이: " + area);
}
}
▶강제로 재정의하도록 하는 것이 abstract 키워드라면
▶강제로 재정의를 못하도록 하는 것은 final static 키워드이다.
2. 실행 코드인 Board 클래스
public class Board {
public static void main(String[] args) {
new Rect().draw(10,50); //Rect r = new Rect(); r.draw(10,50); 와 같은 구문.
new Tri().draw(30,5.6); //즉, 변수 설정 없이 바로 접근해준 것.
//new Rect()를 하나의 객체로 볼 수 있고, 그 객체의 draw()를 호출한 것.
Shape.function(); //static 메서드는 클래스를 통해서 접근 가능하다. new Rect().function(); (x)
}
}
결과는 다음과 같다.
반응형