추상 클래스는 완전하게 구현되지 않는 메소드를 가지고 있는 클래스

다형성을 했을 때 설명했던 내용이다.
도형 class 를 정의할 때 구체적으로 어떤 도형인지 알 수 없으므로 구체적인 동작을 구현하기 어렵다. 도형을 그린다고 가정할 때 구체적으로 어떤 모양을 그려야 하는지 알 수 없다.
이런 경우 도형이라는 클래스 내에 삼각형, 사각형 , 원 등으로 구분할 수 있는데 이런 경우 도형 클래스를 추상 클래스라고 정의한다.
abstract class Shape {
public abstact void draw()
}
추상 클래스는 하나 이상의 추상 메서드를 가지고 있어야 하고, 그를 상속받는 자식 클래스는 반드시 추상클래스를 재정의 해야한다.
class Circle extends Shape {
public void draw() {
System.out.println("원");
}
}
추상 클래스를 사용하는 이유
class Shape {
public void draw(){}
}
이렇게 추상 클래스를 사용하지 않고 일반 클래스에서 오버라이드 가능하고 결과도 동일하다.
하지만 추상 메서드로 정의하면 서브 클래스에서는 반드시 구현을 강요해야 한다.
추상 메서드가 아니면 자식 클래스에서는 재정의 하지 않고 넘어갈 수 있기 때문에 추상 메서드를 강제하고 싶을 때 추상 클래스를 이용한다.
abstract class Shape {
public abstract void draw();
}
class Rectangle extends Shape {
public void draw() {
System.out.println("사각형");
}
}
class Circle extends Shape {
public void draw() {
System.out.println("원");
}
}
public class AbstractTest {
public static void main(String[] args) {
Shape c = new Circle();
Shape r = new Rectangle();
c.draw();
r.draw();
}
}

- 추상 클래스를 활용하면 서브 클래스의 재정의를 강제할 수 있다.
- 추상 클래스는 메모리에 띄울 수 없다.
2. 오브젝트 클래스 (Object class)
자바 클래스에서는 명시적으로 부모 클래스를 선언하지 않으면 Object 가 부모 클래스가 된다.
Share article