완전하게 구현되어 있지 않은 메소드를 가지고 있는 클래스
두가지 이점을 가진다.
동적 할당(new) 불가 원래 빈 메소드라 new를 해도 의미가 없으니 막아둘 수 있음
자식 클래스가 무조건 추상 메소드를 재정의하도록 강제함
(오류가 발생하기 때문에 실수를 방지할 수 있음)
메소드 오버로딩 하려면 이름이 같아야하니 자식 클래스 메서드 이름이 같아짐
아래에서 위로 코드를 작성할 때 유용함?
package ex07;
// abstract = 추상 클래스, 추상 메소드
abstract class Shape {
int x, y;
public void translate(int x, int y) {
this.x = x;
this.y = y;
}
public abstract void draw();
}
class Rectangle extends Shape {
int width, height;
public void draw() {
System.out.println("사각형 그리기 메소드");
}
}
class Circle extends Shape {
int radius;
public void draw() {
System.out.println("원 그리기 메소드");
}
}
public class AbstractTest {
public static void main(String[] args) {
Shape s2 = new Circle();
s2.draw();
}
}