본문 바로가기

Kotlin

[코틀린] 확장 (Extension) 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 확장 기능에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. 확장 (Extension) 확장은 말 그대로 기존의 것을 더 넓고 크게 사용한다는 것이다. 코드를 작성하다 보면 기존의 클래스를 확장시켜야 하는 경우가 생긴다. 내가 직접 만든 클래스에서는 쉽게 함수를 추가하거나 커스텀하게 원하는 동작을 추가할 수 있다. 하지만 자바나 코틀린에서 기본적으로 제공되는 라이브러리나 외부 라이브러리 같은 경우에는 이미 정의된 것 외에는 동작을 추가하기가 어렵다. 그래서 코틀린에서는 클래스 밖에서 함수나 프로퍼티를 선언할 수 있도록 확장이라는 기능을 제공한다. 확장을 사용하면 기존 클래스를 변경하지 않고 확장할 수 있어 OCP(개방.. 더보기
[코틀린] Lazy 초기화 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 Lazy 지연 초기화에 대해 알아보고자 합니다. lazy 초기화는 안드로이드 개발에 있어 중요한 개념이며 자주 사용하기도 합니다. User 클래스를 아래와 같이 정의해보자. 생성자 파라미터와 email 프로퍼티는 User 인스턴스 생성 시 메모리에 올라가게 된다. 이후 변수에 저장된 값을 빠르게 불러올 수 있게 된다. 아래 코드에서 User 인스턴스를 만들고 getFullName, getUserInfo 함수를 호출하면 순서대로 println()을 호출하게 된다. /* firstName, lastName -> 생성자 프로퍼티 email -> 프로퍼티 getFullName() -> User의 전체 이름 getUserInfo() -> User의.. 더보기
코틀린 정리 - (3) 안드로이드 개발하는 kancho입니다 이번 포스팅에서는 코틀린의 클래스와 객체에 대해 정리하려고 합니다. 코틀린의 객체지향 프로그래밍을 하기 위한 가장 기초적이면서 중요한 부분이라고 생각한다. '코틀린 완벽 가이드' 책을 참고하였습니다 Class 어떠한 것에 대해 정의하고 분류하는 설계도 /* User -> 클래스 이름 firstName, lastName, age, email -> 프로퍼티(Property) fullName() -> 함수 클래스의 접근 제한자는 기본적으로 public Java -> class가 package-private(패키지 내부) */ class User { var firstName: String = "" var lastName: String = "" var age: Int = 30.. 더보기
코틀린 정리 - (2) 안드로이드 개발하는 kancho입니다 이번 포스팅에서는 코틀린의 함수에 대해 정리하려고 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다 함수 입력을 받아 출력값을 반환할 수 있는 재사용 가능한 코드 블록 구조 fun (function) : 함수의 시작 addNum : 함수의 이름 num1, num2 : 매개변수이며 지역변수로 취급된다. 어떤 데이터가 필요한지 알려준다 Int : 함수의 반환 타입 (return) fun addNum(num1: Int, num2: Int): Int { return num1 + num2 } fun main() { println("sum : ${addNum(5, 10)}") } 특징 매개변수가 없어도 괄호는 필요 kotlin 매개변수는 immutable, java는 muta.. 더보기
코틀린 정리 - (1) 안드로이드 개발하는 kancho 입니다. 좋은 기회로 코틀린을 다시 복습하는 시간을 가지게 되어 코틀린을 정리하려고 합니다. 코틀린은 안드로이드 플랫폼의 공식 언어이기도 하면서 안전성과 간결성, 상호 운용성을 강조하는 언어입니다. 또한, 자바와 마찬가지로 JVM에서 동작하는 프로그래밍 언어입니다. 이번 포스팅에서는 코틀린의 기본적인 문법에 대해 정리하려고 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. 1) 주석 코드에 대한 설명이나 문서화를 위해 사용합니다. 한 줄 주석( // ) 여러 줄( /* */ )을 사용할 수 있는 주석 // 이름 val name = "kancho" /* 이름은 kancho 이다 lastName 은 lastName 변수를 보면 알 수 있다. */ val firstName .. 더보기