추상 클래스
- 클래스 정의시 abstract class로 정의한다.
- 추상 메소드를 하나 이상 포함한다.
- 추상 메소드는 선언만하고 구현하지 않은 메소드로 abstract 를 명시한다.
- 추상 클래스는 완전하지 않기 대문에 객체를 생성할 수 없다.
- 하위 클래스에서 상속 받은 모든 추상 메소드를 구현하면 객체를 생성할 수 있다.
- 추상 메소드를 모두 구현하지 않을 경우, 하위 클래스도 모두 추상 클래스이다.
- 추상 클래스는 하위 클래스의 공통점을 뽑아 상속해줄 목적으로 만들고, 하위 클래스에 기본 틀을 제공한다.
package Abstract;
// 부모 추상 클래스
public abstract class AbstractParent{
String msg;
public abstract void print();
}
// 자식 클래스, 추상 메소드 구현
public class AbstractChild extends AbstractParent{
@Override
public void print() {
System.out.println(msg);
}
}
// 메인 클래스
public class AbstractMain {
public static void main(String[] args) {
AbstractParent p = new AbstractChild(); // 업캐스팅
p.msg = "Hello";
p.print(); // Hello
AbstractChild c = new AbstractChild();
c.msg = "World";
c.print(); // World
}
}