본문 바로가기

전체 글154

[kotlin] 데이터 클래스(Data classes) Kotlin의 데이터 클래스Kotlin의 데이터 클래스(Data Classes)는 주로 데이터를 보유하는 용도로 사용되는 특별한 클래스입니다.이 가이드에서는 Kotlin 데이터 클래스의 다양한 측면을 상세히 살펴보겠습니다.  데이터 클래스 기본 (Data Class Basics)데이터 클래스는 data 키워드로 표시됩니다:data class User(val name: String, val age: Int)컴파일러는 주 생성자에 선언된 모든 속성에 대해 자동으로 다음과 같은 멤버 함수를 생성합니다:.equals()/.hashCode() 쌍.toString() (예: "User(name=John, age=42)").componentN() 함수 (속성 선언 순서에 해당).copy() 함수 데이터 클래스 요구사.. 2024. 8. 14.
[kotlin] 확장 기능(Extensions) Kotlin의 확장 기능Kotlin의 확장(Extensions) 기능은 기존 클래스나 인터페이스에 새로운 기능을 추가할 수 있게 해주는 강력한 도구입니다.이 가이드에서는 Kotlin 확장의 다양한 측면을 상세히 살펴보겠습니다. 확장 함수 (Extension Functions)확장 함수를 사용하면 기존 클래스에 새로운 메서드를 추가할 수 있습니다. 이는 특히 서드파티 라이브러리의 클래스를 수정해야 할 때 유용합니다.fun MutableList.swap(index1: Int, index2: Int) { val tmp = this[index1] // 'this'는 리스트를 가리킵니다 this[index1] = this[index2] this[index2] = tmp}val list = muta.. 2024. 8. 14.
[kotlin] 가시성 수정자(Visibility modifiers) Kotlin의 가시성 수정자Kotlin에서 가시성 수정자(visibility modifiers)는 코드의 캡슐화와 접근 제어를 위한 핵심 기능입니다.이 가이드에서는 Kotlin의 가시성 수정자에 대해 상세히 알아보겠습니다.   가시성 수정자 기본 (Visibility Modifiers Basics)Kotlin에는 네 가지 가시성 수정자가 있습니다: private, protected, internal, public. 기본 가시성은 public입니다.이 수정자들은 클래스, 객체, 인터페이스, 생성자, 함수, 프로퍼티 및 그 세터에 적용될 수 있습니다. 게터는 항상 해당 프로퍼티와 동일한 가시성을 가집니다. 패키지 레벨 선언 (Package-Level Declarations)함수, 프로퍼티, 클래스, 객체, .. 2024. 8. 13.
[kotlin] 인터페이스(interface) Kotlin의 인터페이스 Kotlin에서 인터페이스는 객체 지향 프로그래밍의 핵심 요소 중 하나입니다. 이 가이드에서는 Kotlin 인터페이스의 다양한 측면을 상세히 살펴보겠습니다.  인터페이스 기본 (Interface Basics)Kotlin의 인터페이스는 추상 메서드의 선언뿐만 아니라 메서드 구현도 포함할 수 있습니다. 추상 클래스와 다른 점은 인터페이스가 상태를 저장할 수 없다는 것입니다. 인터페이스는 interface 키워드를 사용하여 정의합니다:interface MyInterface { fun bar() fun foo() { // 선택적 본문 }}이 예제에서 bar()는 추상 메서드이고, foo()는 기본 구현을 제공하는 메서드입니다. 인터페이스 구현 (Implement.. 2024. 8. 13.
[kotlin] 프로퍼티(Properties) Kotlin의 프로퍼티Kotlin에서 프로퍼티는 클래스의 핵심 요소 중 하나입니다.이 가이드에서는 Kotlin 프로퍼티의 다양한 측면을 상세히 살펴보겠습니다.    프로퍼티 선언 (Declaring Properties)Kotlin에서 프로퍼티는 가변(mutable)과 읽기 전용(read-only) 두 가지로 선언할 수 있습니다:class Address { var name: String = "Holmes, Sherlock" // 가변 var street: String = "Baker" var city: String = "London" var state: String? = null val zip: String = "123456" // 읽기 전용} 프로퍼티를 사용하려면 단순히 이름으.. 2024. 8. 13.
[kotlin] 상속(inheritance) Kotlin의 상속(inheritance)Kotlin에서 상속은 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.이 가이드에서는 Kotlin의 상속 메커니즘을 상세히 살펴보고, 실제 사용 사례와 함께 이해를 돕겠습니다.   기본 개념 (Basic Concepts)Kotlin의 모든 클래스는 공통 상위 클래스인 Any를 가집니다. 명시적으로 상위 타입을 선언하지 않은 클래스는 자동으로 Any를 상속받습니다:class Example // 암시적으로 Any를 상속Any는 equals(), hashCode(), toString() 세 가지 메서드를 가지고 있어, 이 메서드들은 모든 Kotlin 클래스에서 정의됩니다.  기본적으로 Kotlin 클래스는 final이며 상속될 수 없습니다. 클래스를 상속 가능하게 만.. 2024. 8. 13.
[kotlin] 클래스 Kotlin의 클래스Kotlin에서 클래스는 객체 지향 프로그래밍의 핵심 요소입니다.이 문서에서는 Kotlin 클래스의 다양한 측면을 상세히 살펴보겠습니다.   클래스 선언 (Class Declaration)Kotlin에서 클래스는 class 키워드를 사용하여 선언합니다:class Person { /*...*/ }클래스 선언은 클래스 이름, 헤더(타입 매개변수, 주 생성자 등을 지정), 그리고 중괄호로 둘러싸인 본문으로 구성됩니다. 헤더와 본문은 선택사항이며, 본문이 없는 경우 중괄호를 생략할 수 있습니다:class Empty  생성자 (Constructors)Kotlin 클래스는 주 생성자와 하나 이상의 보조 생성자를 가질 수 있습니다. 주 생성자 (Primary Constructor)주 생성자는 클래.. 2024. 8. 12.
[kotlin] Exceptions Kotlin의 예외 처리 Kotlin에서 예외 처리는 프로그램의 안정성과 예측 가능성을 높이는 중요한 기능입니다.이 가이드에서는 Kotlin의 예외 처리 메커니즘을 상세히 살펴보고, 실제 사용 사례와 함께 이해를 돕겠습니다.  예외의 기본 개념 (Basic Concepts of Exceptions)Kotlin은 모든 예외를 unchecked로 취급합니다. 이는 예외를 잡을 수 있지만, 명시적으로 처리하거나 선언할 필요가 없다는 의미입니다. 예외 처리는 주로 두 가지 작업으로 구성됩니다:예외 발생(throwing): 문제가 발생했음을 나타냅니다.예외 잡기(catching): 예기치 않은 예외를 수동으로 처리합니다. 예외 발생하기 (Throw Exceptions)throw 키워드를 사용하여 예외를 수동으로 .. 2024. 8. 12.
[kotlin] Return 과 점프 표현식 Kotlin의 Return 과 점프 표현식Kotlin에서는 프로그램의 흐름을 제어하기 위한 다양한 구조적 점프 표현식을 제공합니다. 이 가이드에서는 return, break, continue의 사용법과 레이블을 활용한 고급 기법을 살펴보겠습니다.  기본 점프 표현식 (Basic Jump Expressions)Kotlin은 세 가지 기본적인 구조적 점프 표현식을 제공합니다:return: 기본적으로 가장 가까운 enclosing 함수나 익명 함수에서 반환합니다.break: 가장 가까운 enclosing 루프를 종료합니다.continue: 가장 가까운 enclosing 루프의 다음 단계로 진행합니다.이 표현식들은 더 큰 표현식의 일부로 사용될 수 있습니다:val s = person.name ?: return이.. 2024. 8. 12.
[Kotlin] 조건문과 반복문 Kotlin의 조건문과 반복문Kotlin은 다양한 조건문과 반복문을 제공하여 프로그래머가 효율적이고 읽기 쉬운 코드를 작성할 수 있게 합니다. 이 가이드에서는 Kotlin의 주요 제어 흐름 구조를 살펴보고, 각각의 사용법과 특징을 자세히 알아보겠습니다.  If 표현식 (If expression)Kotlin에서 if는 표현식입니다. 이는 값을 반환한다는 의미로, 다른 언어의 삼항 연산자(조건 ? 참 : 거짓)를 대체할 수 있습니다.var max = aif (a b) { max = a} else { max = b}// 표현식으로 사용max = if (a > b) a else b// else if도 표현식에서 사용 가능val maxLimit = 1val maxOrLimit = if (maxLimi.. 2024. 8. 11.
[kotlin] 타입 체크와 캐스팅 Kotlin의 타입 체크와 캐스팅Kotlin에서 타입 체크와 캐스팅은 객체 지향 프로그래밍의 핵심 기능입니다. 이 가이드에서는 Kotlin의 타입 체크와 캐스팅 기능을 모든 코드 예제와 함께 상세히 살펴보겠습니다. 아래 글은 kotlinlang.org의 공식 홈페이지의 문서를 참고하였습니다.    is와 !is 연산자 (is and !is operators)is와 !is 연산자는 객체의 타입을 런타임에 확인할 수 있게 해줍니다.if (obj is String) { print(obj.length)}if (obj !is String) { // !(obj is String)과 동일 print("문자열이 아닙니다")} else { print(obj.length)}이 연산자들은 특히 다형성을 활용.. 2024. 8. 11.
[Kotlin] 숫자 타입과 연산 가이드 Kotlin의 숫자 타입과 연산 가이드Kotlin에서 숫자를 다루는 방법과 관련된 다양한 개념을 살펴봅니다.  정수 타입 (Integer types)Kotlin은 숫자를 표현하기 위한 내장 타입 세트를 제공합니다. 정수의 경우, 크기와 값 범위가 다른 네 가지 타입이 있습니다:타입크기 (비트)최솟값최댓값Byte8-128127Short16-3276832767Int32-2,147,483,6482,147,483,647Long64-9,223,372,036,854,775,8089,223,372,036,854,775,807명시적 타입 지정 없이 변수를 초기화할 때, 컴파일러는 Int부터 시작하여 값을 표현하기에 충분한 가장 작은 범위의 타입을 자동으로 추론합니다. Long 값을 명시적으로 지정하려면 값 뒤에 L 접.. 2024. 8. 10.