Kotlin147 [Kotlin] lateinit, by lazy 지연(늦은) 초기화초기화 작업을 극한으로 미루다가 사용자가 필요로 할 때 진행하는 방법클래스 안에 '이 변수를 사용할 것이다'라고 선언만 해두고 나중에 변수를 실제로 사용하는 시점에 값을 입력해주어 사용하는 것null 로 초기화할 수 없고, 객체의 정확한 값을 뒤에 가서야 알 수 있는 경우에 사용한다. lateinitvar 로 선언된 프로퍼티만 사용 가능하다.Non-null 타입만 사용 가능하다.지연 초기화를 위해 사용되는 lateinit 프로퍼티에는 null 값이 할당될 수 없다.프로퍼티에 대한 사용자 정의 getter, setter 를 사용할 수 없다.클래스 생성자에서 사용이 불가능하다.생성자에서는 프로퍼티가 즉시 초기화되어야 한다.초기화 전에는 변수 접근이 불가능하다.원시 타입은 사용이 불가능하다... 2025. 1. 14. [Kotlin] Enum class, Sealed class Enum class상수값의 타입 안전성을 보장하며, when 문에서 상수에 정의된 값에 대한 처리를 반드시 하도록 강제한다.상수 값에 대한 특정한 동작이 필요할 때 특정 상수값에 대한 동작을 빼먹는 것을 방지할 수 있다.각 상수는 단 하나의 인스턴스만 가질 수 있다. (싱글톤)상수의 속성값은 정의 후 변경할 수 없다.다른 클래스를 상속할 수 없고, 다른 클래스에게 상속받을 수도 없다. 그러나 interface 를 구현할 수 있다.상수와 연관된 변수를 상수에 저장할 수 있다.서브 클래스를 생성할 수 없다.private 생성자만 갖는다. BEFORE문제점 : state 의 종류가 늘어날 경우, 처리 로직을 빼먹거나 처리되지 말아야 할 상수값(Int)이 포함될 수 있습니다. 또한, Int 값이 상수값이므로 s.. 2024. 12. 10. [Kotlin] 객체 선언(Object Declaration) , 동반 객체(Companion Object) 코틀린 클래스 안에는 정적인 멤버가 없다. 자바 static 키워드를 지원하지 않는다.그 대신 코틀린에서는 패키지 수준의 최상위 함수와 객체 선언을 활용한다.대부분의 경우 최상위 함수를 활용하는 편을 더 권장한다. 그러나 최상위 함수는 특정 클래스의 private 멤버에 접근할 수 없기 때문에, 클래스 내부에 정의된 static 멤버가 다른 클래스 멤버와 상호작용해야 하는 경우에는 적합하지 않다.static 을 최상위 함수로 대체할 수 없는 경우에는 object 를 고려한다. 객체 선언(Object Declaration) : 싱글톤클래스 선언과 그 클래스에 속한 단일 인스턴스의 생성을 동시에 처리해주기 때문에, 싱글톤에 사용하기 적합하다.클래스 전체가 하나의 싱글톤 객체로 선언되고, 처음 사용될 때까지 .. 2024. 12. 9. [Kotlin] 범위 지정 함수(Scope function) Scope function객체의 이름을 사용하지 않고, 객체에 접근이 가능하게 하는 함수특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수 (feat. kotlinworld)FunctionObject referenceReturn valueIs extension functionletitLambda resultYesrunthisLambda resultYesrun-Lambda resultNo: called without the context objectwiththisLambda resultNo: takes the context object as an argumentapplythisObject referenceYesalsoitObject referenceYes it람다식 내부에서 사용되는 암시.. 2024. 12. 9. [Kotlin] 타입 연산자(is, as), 널 처리 연산자 타입여러 종류의 데이터를 식별하는 분류로, 어떤 값이 가능한지와 그 타입에 대해 수행할 수 있는 연산의 종류를 결정한다. 타입 체크is와 !is 연산자를 사용하여 런타임에 객체가 주어진 타입인지 확인할 수 있다.스마트 캐스트(Smart Cast) : 컴파일러가 불변 값에 대해 is 검사를 추적하여 필요할 때 자동으로 (안전하게) 캐스팅을 수행하는 기능 타입 캐스팅as 연산자를 사용하여 데이터 타입을 다른 데이터 타입으로 변환할 수 있다.캐스팅은 주로 상속 관계에 있는 클래스들 간에 사용된다.상위 클래스의 객체를 하위 클래스 타입으로 변환하거나, 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 데 활용된다. 업캐스팅하위 클래스의 인스턴스를 상위 클래스 타입으로 변환하는 것항상 안전하며, 명시적으로 캐스.. 2024. 12. 8. [Kotlin] Kotlin 이란 Kotlin자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어간결하고 실용적이며, 자바 코드와의 *상호운용성을 중시한다.상호운용성 : 하나의 시스템이 동일 또는 이기종의 다른 시스템과 아무런 제약이 없이 서로 호환되어 사용할 수 있는 성질목적 : 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것자바와 마찬가지로 코틀린도 정적 타입 지정 언어다.널이 될 수 있는 타입을 지원함에 따라 *컴파일 시점에 널 포인터 예외(NullPointerException)가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.컴파일 시점(Compile Time) : 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계.. 2024. 12. 8. [Kotlin] 객체 지향 프로그래밍(Object-Oriented Programming) 프로그래밍 방식1. 명령형 프로그래밍(Imperative Programming, IP)프로그래밍의 상태와 상태를 변경하는 구문의 관점에서 연산을 설명하는 방식무엇(What)을 ‘어떻게(How)’ 할 것인지에 집중한다.1-1. 절차지향 프로그래밍(Procedural Programming, PP) : 문제를 순차적으로 처리하여 프로그램을 만드는 방식 (C, C++)절차지향 프로그래밍은 함수를 구조화할 뿐 데이터 자체를 구조화하지 못하기 때문에, 소프트웨어의 규모가 커지거나 변화가 생기면 각각의 함수에 의존하는 부분을 매번 고쳐야 하는 등 작업이 복잡해져 스파게티 코드를 유지보수하는 데 어려움을 겪는다.1-2. 객체지향 프로그래밍(Object-Oriented Programming, OOP) : 객체들 간의 상.. 2024. 12. 8. 이전 1 2 3 4 ··· 21 다음