Kotlin 복습(4)-lateinit,lazy,data,sealed class

지슈·2023년 7월 9일
0

Kotlin 복습

목록 보기
4/4

초기화 지연

  • 정의: 변수를 선언할 떄 값을 지정하지 않고, 나중에 지정할 수 있는 방법
  • 목적: 메모리 효율적으로 사용하기 위해서, null safe한 value를 사용하기 위해서
  • lateinit, var
    - 변수 타입을 지정해줘야 함
    • primitive 타입은 사용할 수 없음
    • 선언 후, 나중에 초기화해줘도 됨
  • lazy, val
    - 선언과 동시에 초기화를 해야함
    • 호출 시점에 초기화가 이뤄짐

lateinit

lateinit var text: String
lateinit var age : Integer

lateinitvar타입 변수를 선언할 때 사용한다.
어떤 타입인지는 선언해야 하지만 초기화는 나중에 해도 괜찮다.
다만 Int같은 primitive 타입은 사용할 수 없다(Integer을 사용).

lazy

val test : Int by lazy {
    100 
}

by lazy는 람다식으로 사용한다. 따라서 {}중괄호의 마지막 줄이 리턴타입이어야 한다.
그리고 변수는 호출하기 전까지는 메모리에 할당되지 않는다.
이 경우 test 변수 호출하는 시점에 초기화가 되고 메모리에 할당된다.



데이터 클래스

: 데이터를 담기 위한 클래스

  • toString(), hashCode(), equals(), copy() 메서드를 자동으로 생성
  • override 하면 직접 구현한 코드를 사용하게 된다.

조건 :
1개 이상의 property가 있어야 함
데이터 클래스는 abstract, open, sealed, inner를 붙일 수 없음.
상속이 불가능

sealed 클래스

: 추상 클래스로, 상속받은 자식 클래스의 종류를 제한한다.

  • 컴파일러가 sealed 클래스의 자식 클래스가 어떤 것인지 앎.
  • when과 함께 쓰일 때, 장점을 느낄 수 있음
profile
😎인공지능&⛓️블체

0개의 댓글