- "추상화 (Abstraction)" : 상속을 강제하는 것
- 추상 클래스는 무조건 상속해서 사용해야 함
- 추상 메소드는 형식만 존재하며, 사용하는 쪽에서 오버라이딩해서 사용해야 함
- 추상 메소드를 갖고 있는 클래스는 자동으로 추상 클래스가 됨
- 추상 클래스에는 추상 메소드 뿐만 아니라 일반 메소드도 있을 수 있음
- 추상 클래스는 추상 메소드를 통해 서브 클래스가 구현할 메소드를 명료하게 알려주는 인터페이스의 역할을 하고,
서브 클래스는 추상 메소드를 목적에 맞게 구현하는 다형성을 실현
abstract class A {}
class B extends A {}
public class AbstractDemo {
public static void main(String[] args) {
A obj = new A(); // 에러
B obj = new B();
}
}
abstract class A {
public abstract int b();
// 추상 메소드
}
class B extends A {}
public class AbstractDemo {
public static void main(String[] args) {
B obj = new B();
// 추상 메소드 b를 상속하지 않았기 때문에 에러가 발생함
}
}
public abstract int c() {
System.out.println("Hello");
// 추상 메소드는 형식만 가질 수 있기 때문에 에러가 발생함
}