[Dart] 클래스 Modifier

GH lee·2024년 2월 12일
0

Dart/Flutter

목록 보기
11/12

1. abstract

  • 클래스 내부의 구현이 필요하지 않은 경우에 사용
  • 추상 클래스의 인스턴스를 생성할 수 없음
  • 팩토리 생성자를 통해 인스턴스를 생성할 수 있는 것 처럼 만들 순 있음
  • 추상 메소드를 포함하는 경우가 많음

2. base

  • 상속을 강제시킬 경우에 사용
  • 외부 라이브러리에서 implements로 내부를 새로 구현하는 것을 허용하지 않음
  • base 클래스를 상속하는 클래스는 base, final, sealed 클래스여야 함

외부 라이브러리란?
해당 파일 + part로 포함된 파일을 제외한 모든 파일

3. final

  • 외부 라이브러리에서 해당 클래스에 상속과 구현을 모두 막을 경우 사용
  • final 클래스를 상속하는 클래스는 base, final, sealed 클래스여야 함

4. interface

  • 인터페이스를 만들 때 사용
  • interface 클래스 멤버는 내부에 구현이 되어 있어야함
  • 상속 불가, 구현만 가능

abstract interface

  • interface처럼 외부에서 구현 가능, 상속 불가
  • abstract처럼 추상 멤버를 가질 수 있음

5. sealed

  • 클래스가 여러가지의 정해진 서브타입을 가지는 경우 사용
  • 외부 라이브러리에서 상속, 구현 불가능(암시적으로 abstract 클래스임)
  • 팩토리 생성자를 통해 서브클래스를 생성할 수 있지만 자체 인스턴스는 생성 불가
  • 서브클래스들은 abstract 클래스가 아님
  • switch문에서 서브타입이 엄격하게 적용됨

6. mixin

  • mixin은 따로 정리
profile
Flutter Junior

0개의 댓글