본문 바로가기
반응형

Kotlin Language/Kotlin 기본 문법26

Kotlin(코틀린) - 오브젝트(Object, Companion Object) Object? object 키워드는 싱글톤, 클래스의 단일 인스턴스를 선언할 때 사용됩니다. 클래스를 선언하고 동시에 해당 클래스의 인스턴스를 생성하는 것과 유사합니다. 오브젝트는 하나의 인스턴스만 있는 클래스를 만들 때 사용됩니다. object MySingleton { fun doSomething() { println("작업 중...") } } //사용하고자 호출할 때 MySingleton.doSomething() Companion Object? companion object는 포함된 클래스의 인스턴스와 결합된 특수한 종류의 오브젝트입니다. companion object의 멤버는 클래스 이름을 사용하여 직접 액세스할 수 있습니다. 클래스와 관련된 정적 메서드 및 상수를 그룹화하는 데 사용됩니다. cla.. 2023. 12. 8.
Kotiln(코틀린) - 반복문(forEach) forEach ? Kotlin에서 반복문을 사용할 때 흔히 쓰이는 고차함수 중 하나입니다. 이 함수는 컬렉션의 각 요소에 대해 주어진 람다 표현식을 실행하는 역할을 합니다. Kotlin에서는 forEach를 사용하여 배열이나 리스트와 같은 Iterable 객체를 반복하는데 주로 활용합니다 배열 또는 리스트에서 사용하며, 직관적이고 코드 가독성이 뛰어납니다. 기본적인 형태 val numbers = listOf(1, 2, 3, 4, 5) numbers.forEach { // 각 요소에 대한 작업을 수행 println(it) } forEach는 numbers 리스트의 각 요소에 대해 중괄호 안에 있는 람다 표현식을 실행합니다. it은 현재 반복되고 있는 요소를 나타내는 람다의 암시적인 인자입니다. 코드에서는 .. 2023. 12. 8.
Kotlin(코틀린) - 제네릭(Generic) 제네릭(Generic) 타입을 매개변수로 받아서 코드를 작성할 수 있게 하는 프로그래밍 기법입니다. 즉, 함수나 클래스를 선언할 때, 구체적인 타입을 지정하는 대신에 추상적인 타입 매개변수를 사용하여 타입에 독립적인 코드를 작성할 수 있도록 해줍니다. 자료형의 객체들을 다루는 메서드나 클래스에서 컴파일 시간에 자료형을 검사해 자료형을 선택할 수 있게 해주는 것입니다. 앵글 브래킷 사이에 형식 매개변수를 사용해 선언하며, 여기서 형식 매개변수는 자료형을 대표하는 용어로 T와 같이 특정 영문의 대문자를 사용합니다. 형식 매개변수 이름 규칙 앵글 브래킷 사이에 형식 매개변수를 넣어 선언합니다. 자료형을 대표하는 T와 같이 특정 영문의 대문자로 사용하며 나중에 피룡한 자료형으로 대체합니다 E(Element), .. 2023. 12. 7.
Kotlin(코틀린) - 확장함수(Extension functions) 확장함수(Extension Functions)? 이미 존재하는 클래스에 새로운 함수를 추가하는 메커니즘을 제공합니다. 이는 기존 클래스를 수정하지 않고도 해당 클래스에 새로운 기능을 추가할 수 있는 강력한 기능입니다. 확장 함수는 클래스의 멤버 함수처럼 호출될 수 있으며, 새로운 기능을 제공하기 위해 클래스 외부에서 정의됩니다. 확장함수는 언제 사용할 수 있을까? 확장 함수는 주로 기존 클래스나 라이브러리를 수정할 수 없는 상황에서 새로운 기능을 추가하거나 사용성을 향상시킬 때 유용하게 사용됩니다. 외부 라이브러리를 확장하여 해당 라이브러리가 제공하지 않는 기능을 쉽게 추가하거나, 코드의 가독성을 높이기 위해 유틸리티 함수를 만들 때 확장 함수를 활용할 수 있습니다. 확장 함수는 이미 존재하는 클래스에 .. 2023. 12. 7.
Kotlin(코틀린) - 지연 초기화(lateinit , lazy) 지연 초기화 ( lateinit, lazy ) ? lateinit과 lazy는 모두 Kotlin에서 변수를 지연 초기화하는 데 사용되는 기술입니다. 그러나 두 가지 기술은 목적과 사용법에서 차이가 있습니다. 두 기능은 초기화를 나중으로 미루는데 사용되지만, lateinit은 초기화 이전에는 사용할 수 없고, lazy는 처음 사용될 때 초기화되며 이후에는 더 이상 초기화하지 않습니다. 선택은 상황과 목적에 따라 다르며, lateinit은 var 변수에, lazy는 val 변수에 사용됩니다. lateinit lateinit은 주로 클래스의 프로퍼티에 사용되며, 선언 이후 어느 시점에서나 초기화할 수 있는 기능을 제공합니다. 주로 의존성 주입이나 특정 메서드에서 초기화해야 하는 경우에 사용됩니다. class .. 2023. 12. 7.
Kotlin(코틀린) - 오버라이딩(Overriding) 오버라이딩(Overriding) 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 동일한 메서드 이름, 매개변수 타입 및 개수, 반환 타입를 가진 메서드로 다시 구현하는 것을 의미합니다. 이것은 상속 관계에서 발생하며, 자식 클래스에서 부모 클래스의 메서드를 필요에 맞게 재정의할 수 있게 해줍니다 오버로딩 (Overloading) 오버로딩은 같은 클래스 내에서 메서드 이름은 동일하지만 매개변수의 타입, 개수, 또는 순서가 다른 여러 메서드를 정의하는 것입니다. 메서드가 서로 다르기 때문에 컴파일러가 호출될 메서드를 식별할 수 있습니다. 오버라이딩 사용법 open class Animal { open fun makeSound() { println("소리 모음") } } class Dog : Animal(.. 2023. 12. 6.
Kotlin(코틀린) - 스코프 함수(let, with, run, apply, also) 정리 스코프 함수 (Scope Function) ? 코틀린에서는 스코프 함수라는 특별한 종류의 함수가 있습니다. 이 함수들은 객체의 범위 내에서 코드 블록을 실행하며, 주로 객체 초기화, 속성 설정, 연산 후 결과 반환 등의 작업에 사용됩니다. 객체의 이름을 통해 하나하나 참조하지 않고 객체를 접근하고 핸들링 할 수 있는 장점이 있습니다. 주요한 코틀린 스코프 함수에는 let, run, with, apply, also 다섯 가지가 있습니다. let let 함수는 수신 객체를 람다 함수의 인자로 전달하고, 람다 함수의 결과를 반환합니다. 주로 null 체크 후에 안전하게 수행해야 할 작업이 있을 때 사용됩니다. data class Person(var name: String, var age: Int) val pe.. 2023. 12. 6.
Kotlin(코틀린) - 고차함수(Higher-order Function) 고차함수(Higher-order functions)? 고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수입니다. 코틀린에서는 람다나 함수 참조를 사용해 함수를 값으로 표현할 수 있으며, 람다나 함수 참조를 인자로 넘길 수 있거나 람다나 함수 참조를 반환하는 함수입니다. 함수 타입(Function types) 람다를 파라미터로 받는 함수를 정의 하고자 한다면, 람다 파라미터의 타입을 어떻게 선언하는지 알아야됩니다. 파라미터의 타입을 정의하기 전에 더 간단한 방법으로 람다를 지역 변수에 대입하는 방법을 나열하겠습니다. 코틀린의 타입 추론으로 덕분에 변수의 타입을 지정하지 않더라도 람다를 변수에 대입할 수 있습니다. 함수 타입 명시 // 타입 추론 val sum = {x: Int, y: Int -> .. 2023. 12. 6.
Kotlin(코틀린) - 널 안전성 (Null-Safety) 널 안전성 (Null Safety) ? null safety(널 안전성)를 강조하는 프로그래밍 언어로, null에 대한 안전한 처리를 지원합니다. NullPointerException(NPE)과 같은 예외를 방지하고 프로그램의 안정성을 향상시키는 데 도움이 됩니다. 코틀린은 Nullable과 Non-Null 타입으로 프로퍼티를 선언할 수 있으며, 기본적으로 값이 null 아니고 NotNull이다. 코틀린에서는 왜 널을 기본값으로 하지 않을까? Java에서 가장 많이 발생하는 오류는 NPE(NullPointerException)입니다. 코틀린은 코드에서 NPE(NullPointerException)을 제거하기 위해서 기본적으로 허용하지 않습니다. 허나, null값을 허용하는Nullable 타입으로 프로퍼티.. 2023. 12. 5.
728x90
반응형