클래스 자체는 쓸일이 없고, 상속을 위해 존재하는 클래스
ex)
부모 클래스 : CPU.class (추상 클래스)
자식 클래스 : Intel.class, AMD.class
/* 추상 클래스 선언 */
public abstract class CPU { ... }
추상 클래스는 new 생성자로 직접 생성하지 못하고, 상속을 통해 자식 클래스만 만들 수 있다.
추상 클래스의 메서드 중, 자식객체마다 실행 내용이 달라서 오버라이딩을 해야만 쓸수 있고 오버라이딩을 안하면 못쓰는 메서드
/* CPU.java */
public abstract class CPU {
// 추상 메서드 선언
abstract void powerOn();
}
/* Intel.java */
public class Intel extends CPU {
@overide
public void powerOn() {
System.out.println("Intel")
};
}
특정 자식 클래스만 둘 수 있도록 제한할 수 있다.
public sealed class 부모 permits 자식A, 자식B, 자식C { ... }
이렇게 생성된 자식 클래스는 final 클래스가 될지, 봉인을 해제할지, 또 봉인을 할지 선택해야 한다
// final 클래스 선택
public final class 자식A extends 부모 { ... }
// 봉인 해제 선택
public non-sealed class 자식B extends 부모 { ... }
// 봉인 선택
public sealed class 자식C extends 부모 permits 손주1 { ... }