[Java] 상속 : 추상 클래스, sealed 클래스

Local Gaji·2023년 8월 16일

이것이 자바다

목록 보기
8/18

🎈 추상 클래스

클래스 자체는 쓸일이 없고, 상속을 위해 존재하는 클래스

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")
  };
}

🎈 sealed 클래스

특정 자식 클래스만 둘 수 있도록 제한할 수 있다.

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 { ... }

0개의 댓글