본문 바로가기

TIL

[TIL] 0816 Enum Class

[오늘 배운 내용]

-1-  Enum class

  • enum 은 enumeration의 줄임말로 '열거'를 뜻한다, enum class 는 상수들을 관리할 수 있고, 각 상수들을 마치 클래스 객체처럼 사용할 수 있는 등 유용한 기능을 제공한다.
  • enum class 에서 개체는 쉼표로 구분되며, 대문자로 작성한다. 세미콜론 ' ; ' 을 사용해야하는 상황도 있다 - 본문에서 나온다
  • 다른 클래스를 상속받을 수 없으며, 상속해줄 수도 없지만 인터페이스를 구현할 수는 있다.
  • Enum class 를 사용하는 이유?
    • 일반적으로 클래스 내부에서 상수(val)를 선언해서 사용하고 했는데, 이는 해당 클래스의 객체를 생성할 때 마다 각각 값은 같으나 다른 상수를 갖게 되는 것이다. enum 클래스를 통해 하나의 클래스의 하나의 상수로 관리하는 것으로 타입 안정성을 보장할 뿐 아니라 코드가 단순해져 효율적인 유지보수에도 용이하며 가독성도 좋아진다.
  • Enum class 정의하기
enum class Rainbow {
	RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}

 

 

  • 정의된 열거체의 첫번째 상수값 0 부터 열거된 순서대로 1씩 증가되는 값을 갖는데, ordinal 값으로 해당 상수의 위치를 찾을 수 있다.
  • 각각의 상수는 enum class의 소속된 개별적인 객체 이므로 특정 값으로 초기화 될 수 있다.
enum class Rainbow (val rgb:String){
    RED("#FF0000"),
    ORANGE("#FF7F00"),
    YELLOW("#FFFF00"),
    GREEN("#00FF00"),
    BLUE("#0000FF"),
    INDIGO("480082"),
    VIOLET("9400D3");
}

fun main() {

    println(Rainbow.RED.name) // RED 출력
    println(Rainbow.YELLOW.ordinal) /// 2 출력
    println(Rainbow.GREEN.rgb) // #00FF00 출력

}

 

 

  • Enum 클래스는 프로퍼티와 메서드 역시 가질 수 있다, 이는 Enum 클래스의 상수 객체들도 프로퍼티와 메서드를 사용할 수 있다.
  • 프로퍼티와 매서드를 포함할 경우, 상수와 구별하기 위에 상수들을 모두 정의한 후 ' ; ' 세미콜론을 적어주어야 한다.
    • ; 처음 쓰는 것 같다.

 

 

 

 

 

-2- Sealed class

  • Sealed class는 자기 자신이 추상 클래스이고, 자신을 상속받는 여러 서브 클래스들을 가질 수 있다.
    • Enum클래스와 달리 상속을 지원하기 때문에, 상속을 활용한 풍부한 동작을 구현할 수 있다.
  • sealed 클래스의 특성은 다음과 같다
    • sealed 클래스의 서브 클래스들은 반드시 같은 파일 내에 선언되어야 함
      • 단, sealed 클래스의 서브 클래스를 상속한 클래스들은 같은 파일 내에 없어도 됨
    • sealed 클래스는 기본적으로 abstract 클래스임
    • sealed 클래스는 private 생성자만 갖게 됨
  • 자신의 서브 클래스 또한 같은 파일 내에 선언되어야 하기 때문에, 값을 반환하는 when 을 사용하더라도 예외를 처리하는 else 를 사용하지 않아도 된다.

 

 

 

-3-

 

 

 

 


 

[오늘 복습한 내용]

1.  타이틀 바 없애기

 

2. 상태 바 없애기

 

 

 


[오류,에러 등등]

1.

 

2.

 

3.

 


[느낀 점]

1. 정신 없이 여러가지 배우면서 바로 과제에 적용하다 보니까 어떤 것을 TIL에 적으면 좋을지 계획하지 못하고 있다. 복습을 안하다 보니까 시간이 지나면 금방 잊어버려서 다시 한번 TIL의 중요성을 느꼈다.

 

2. 지난번 부터 어떤것을 공부할지 미리 계획하고자 했는데, 이뤄지지 않고 있다. 과제를 진행하면서 배우는것도 있지만, 복습, 알고리즘 같은 것들은 계획하고 진행할 수 있게끔 시간관리를 하면 좋을 것 같다.

'TIL' 카테고리의 다른 글

[TIL] 0818 strings.xml, 언어변경  (0) 2023.08.18
[TIL] 0817 람다  (0) 2023.08.17
[TIL] 20230809  (0) 2023.08.09
[TIL] 20230808 5일차  (0) 2023.08.08
[TIL] 20230804 - 4일차  (0) 2023.08.05