코틀린

Kotlin

[Kotlin] 가시성 지시자

가시성 지시자 가시성 지시자는 해당 요소가 어디에서 접근이 가능한지를 결정하는 역할을 합니다. private : 외부에서 접근할 수 없습니다. protected : 상속관계에 있을 때만 외부에서 접근이 가능합니다. internal : 같은 모듈 내에서 접근이 가능합니다. public : 어디서든 접근이 가능합니다. (기본값)

Kotlin

[Kotlin] 다양한 클래스(3)

Inner class 자바에서는 클래스 안에 클래스를 정의하면 자동으로 내부 클래스가 됩니다. 코틀린에서 클래스 안에 클래스를 선언하면 중첩 클래스입니다. 내부 클래스로 만들고 싶다면 inner 키워드로 클래스를 선언해야 합니다. 내부 클래스는 기본적으로 외부 클래스를 참조가 되지만 중첩 클래스는 참조가 불가능합니다. // 중첩 클래스 (nested) class OuterNested { private val num: Int = 1 class Nested { // 중첩 클래스는 외부 클래스 멤버 참조 불가 // fun foo() = num // 불가능 fun foo() = 10 } } // 내부 클래스 (inner) class OuterInner { private val num: Int = 1 inner ..

Kotlin

[Kotlin] 다양한 클래스(2)

열거형 클래스 (Enum class) 별도의 인자가 없는 열거형 클래스이다. [클래스 이름.name]으로 이름 값을 가져올 수 있습니다. [클래스 이름.ordinal]로 해당 값이 몇 번째에 있는지 순서 값을 가져올 수 있습니다. 인자가 있는 열거형 클래스인 경우 각 열거 값들을 표현하는 방식을 다채롭게 할 수 있습니다. // 인자 없는 enum class enum class Animal { DOG, CAT, PANDA } fun main() { val animalEnum: Animal = Animal.CAT println("${animalEnum.name}...${animalEnum.ordinal}") val animalEnum2: Array = Animal.values() for (i in anima..

Kotlin

[Kotlin] 데이터 클래스 및 다양한 클래스(1)

데이터 클래스 data class로 선언하여 사용합니다. 구분은 쉼표(,)로 하고, 변수나 상수를 선언할 수 있습니다. 프로퍼티를 일반 클래스와 달리 초기화 해주지 않아도 됩니다. 생성과 동시에 클래스 내의 프로퍼티를 기준으로 생성자가 만들어집니다. 통신이나 별도의 DB를 사용할 경우 data class를 활용합니다. VO(Value Object)를 다룰 때 사용하면 유용합니다. 일반 클래스와 비교 // 일반 클래스 선언 class Info(var name: String) { private var age: Int = 0 private var gender: String = "" constructor(name: String, age: Int, gender: String): this(name) { this.a..

Kotlin

[Kotlin] 추상 클래스

추상 클래스(abstract class) 상속 받을 클래스에서 구현해야 할 프로퍼티 및 메서드를 기술한 클래스입니다. abstract 키워드와 함께 선언하고 추상클래스는 객체 생성이 불가능합니다. 코틀린에서 상속 받기 위해서 open클래스로 선언 했는 데 추상 클래스는 필요가 없습니다. abstract class Car(val name: String, val color: String, val weight: Double) { // 추상 프로퍼티 (반드시 하위 클래스에서 재정의해 초기화 해야함) abstract var speed: Double // 일반 프로퍼티 (초기 값인 상태를 저장할 수 있음) var quality = "High" // 추상 메서드 (반드시 하위 클래스에서 구현해야 함) abstract..

Kotlin

코틀린 정적 변수

companion object 자바에서의 static 같이 동적인 초기화 없이 정적으로 고정하는 방법. 코틀린은 static이 없이 때문에 companion object를 사용한다. 프로그램 실행 시 고정적으로 가지는 메모리. 객체 생성 없이 사용한다. 단 자주 사용되지 않는 변수나 객체를 만들면 메모리가 낭비된다. class Coffee { var name: String = "Americano" var price: Int = 4000 companion object { var language: String = "Korean" fun drink() { println("drink") } } } fun main() { println(Coffee.language) Coffee.language = "English..

Kotlin

코틀린 프로퍼티와 초기화

코틀린 프로퍼티 (Property) 변수 선언과 접근 메서드를 모두 가진다. 접근 메서드를 따로 만들지 않아도 내부적으로 생성한다. 게터(Getter)와 세터(Setter) 구성 코틀린은 자바와 다르게 모든 변수에 대한 접근 메서드(게터 + 세터)를 만들지 않아도 기본 생성해준다. val인 경우 불변형이기 때문에 게터(Getter)만 설정할 수 있다. fun main() { val coffee = Coffee("Americano", 4000) // Getter에 의한 값 얻기 val coffeeName = coffee.name // Setter에 의한 값 설정 coffee.price = 5000 } // 접근 메서드는 내부적으로 생성 class Coffee(name: String, price: Int) ..

Kotlin

코틀린 클래스와 객체

객체 지향 프로그래밍(OOP : Object Oriented Programming) 프로그램의 구조를 객체 간 상호작용으로 표현하는 프로그래밍 방식 객체와 관계를 표현하며 이를 통해 확장과 재사용성이 용이 Java와 Kotlin은 객체 지향 프로그래밍을 지원 클래스 대상들을 분류하고 속성과 함수를 작성한 것 fun main() { val coffee = Coffee() // 클래스의 생성자를 통해 객체 생성 coffee.name = "Latte" // 객체 속성에 값 할당 coffee.getPrice() // 객체의 함수 호출 } class Coffee { // 클래스 작성 // 속성 var name: String = "Americano" var price: Int = 4000 // 함수 fun getP..

Kotlin

코틀린 함수

함수형 프로그래밍 함수가 일급 객체로써 재사용성을 높인 프로그래밍 패러다임 일급 객체 : 변수나 데이터에 할당할 수 있고 리턴값으로 사용 가능하며 객체를 인자로 넘길 수 있어야 함 방식 의미 ex 절차 지향 프로그래밍 순서대로 동작하는 방식 C 객체 지향 프로그래밍 클래스가 최우선이 되는 방식 Java, C++ 함수형 프로그래밍 함수의 동작이 최우선이 되는 방식 Kotlin, Javascript 장점 코드를 간결하게 구현할 수 있고 가독성을 높일 수 있음 동시성 작업을 쉽게 구현할 수 있음 람다 함수 람다 함수는 익명 함수를 의미 람다 규칙 람다 함수는 중괄호{}로 표현 -> 기준으로 왼쪽은 매개변수, 오른쪽은 함수 내용으로 작성 매개변수 타입을 추론할 수 있으면 생략 가능 함수의 마지막 표현식은 반환 ..

Kotlin

코틀린 조건문과 반복문

조건문 if var num: Int = 1 if(num == 1) { // 조건1 println("Success") } else if(num == 2) { // 조건2 println("Fail") } else println("Unknown") // 한 줄이면 괄호 생략 가능 when : Java의 Switch에 대응 var num: Int = 1 when(num) { 1 -> println("num은 1") 2 -> println("num은 2") in 3..5 -> println("num은 3이상 5이하") !in 6..10 -> println("num은 6이상 10이하가 아님") else -> println("위의 조건에 해당하지 않음") } if문과 when문 모두 마지막 값을 리턴할 수 있다. 코..

Jyuni
'코틀린' 태그의 글 목록