본문
코틀린(Kotlin) 기본 문법 - 5
도입
이번 포스팅에서는 코틀린의 개념 중
1) 데이터 클래스
2) companion object
3) open 키워드
에 대해서 정리할 것이다.
오늘 정리할 개념들은 연관이 없다. 코틀린 공부 중 잘 모르겠는 것들을 모아 정리하는 것이다.
데이터 클래스 개념
자바에서는 사용자 정의 클래스를 비교하기 위해서는 equals(), hasCode()를 추가로 구현해야 했다.
또한, toString()를 이용해 값을 확인하기 위해서는 추가로 구현을 해줬어야 했다.
코틀린에서 데이터 클래스는 equals(), hasCode(), toString()를 컴파일러가 자동으로 구현해준다.
데이터 클래스 실습
데이터 클래스 적용 후 |
|||
|
|||
데이터 클래스 적용 전 |
|||
|
|||
companion object 개념
자바에서는 클래스 내에 정적 필드, 정적 메소드가 필요하다면 static 키워드를 통해 인스턴스 생성없이 접근이 가능했다.
그러나 코틀린에서는 static 키워드를 제공하지 않는다.
그 대신, 인스턴스 생성없이 접근 할 수 있는 Object를 제공하고 이것을 companion object라고 한다.
여기서 확장해서 생각하면 코틀린에서 object 키워드로 싱글톤을 제공한다.
companion object 실습
Kotlin - companion object |
|||
|
Java - static |
|||
|
동일한 결과
1 2 | Log.e("heepie", "${MathJava.PI * MathJava.sum(1,2)}") Log.e("heepie", "${MathKotlin.PI * MathKotlin.sum(1,2)}") | cs |
open 키워드 개념
자바의 final 키워드는 클래스 상속, 메소드 재정의, 값 재정의를 불가능하게 만들었다.
그러나 코틀린에서는 final 키워드를 지원하지 않는 대신 open 키워드를 제공한다.
open 키워드는 클래스 상속, 메소드 재정의, 값 재정의를 가능하게 만는다.
open 키워드 실습
open 키워드 적용 후 |
open 키워드 적용 전 |
클래스 뿐만 아니라 메소드, 값도 open 키워드가 없다면 재정의가 불가능하다.
#kotlin #data class #companion object #open
'컴퓨터 > 이론: 개발' 카테고리의 다른 글
RxJava Observable 생성 (0) | 2018.03.31 |
---|---|
[2018.03.25] 28. Git 협업하기 (0) | 2018.03.25 |
[2018.03.17] 37. RxJava Subject 개념과 종류 (0) | 2018.03.17 |
[2018.03.16] 27. type-safe 개념 (0) | 2018.03.16 |
코틀린(Kotlin) 기본 문법 - 4 (0) | 2018.03.12 |
댓글