세상을 더 편리하게
[Kotlin] 내부 클래스(1)
Programming/Kotlin 2020. 3. 15. 10:11

중첩 클래스 중첩 클래스는 말 그대로 클래스 내부에 들어가있는 클래스이다. class Outer{ val ov = 5 class Nested{ val nv = 10 fun greeting() = "[Nested] Hello ! $nv" } fun outside(){ val msg = Nested().greeting() println("[Outer] $msg ${Nested().nv}") } } fun main() { val output = Outer.Nested().greeting() println(output) val outer = Outer() outer.outside() } 위의 15번 줄으 ㅣ코드를 보면 Outer().Nested() 가 아닌 Outer.Nested() 가 되어있다. 즉, Nest..

[Kotlin] 데이터 클래스
Programming/Kotlin 2020. 3. 15. 07:46

데이터 클래스는 데이터 전달을 위한 객체 DTO(Data Transfer Object)라고 불립니다. 데이터 클래스는 로직을 가질 수 없습니다. (데이터 표현 데이터 비교 메소드는 제외) 코틀린 데이터 클래스에서 내부적으로 자동 생성되는 메소드는 다음과 같습니다. 프로퍼티를 위한 게터/세터 비교를 위한 equals()와 키 사용을 위한 hashCode() 프로퍼티를 문자열로 변환해 순서대로 보여주는 toString() 객체 복사를 위한 copy() 프로퍼티에 상응하는 component1() ...2 등 [ 코틀린 프로퍼티 = 필드(변수) + 게터/세터 ] data class Customer(var name: String, var email: String) { var job: String = "Unknow..

[Kotlin] 인터페이스
Programming/Kotlin 2020. 3. 14. 13:57

인터페이스 코틀린의 인터페이스는 다음과 같은 특징을 갖고 있다. 다른 객체 지향 언어와는 다르게 메서드에 구현 내용이 포함 될 수 있다. 프로퍼티를 선언 할 수 있지만 정의할 수 없다. 추상 메소드와 일반 메소드 두 종류 구현이 가능하다. interface Pet { var category: String fun feeding() // 추상 메소드 fun patting() { //일반 메소드 println("Keep patting") } } class Cat(override var category: String) : Pet { override fun feeding() { println("Feed the cat a tuna can!") } } fun main() { val obj = Cat("small") ..