class Person(val name: String)
- class 이름 : Person
- 괄호 안의 파라미터는 프로퍼티
- 클래스의 기본 가시성은
public
프로퍼티
- 클래스
- 데이터를 캡슐화
- 캡슐화한 데이터를 다루는 코드를 한 주체 아래 가두는 것
- 프로퍼티
- 자바에서는 필드와 접근자를 묶어서 프로퍼티라고 부름
- 코틀린 프로퍼티
- 자바의 필드와 접근자 메소드를 완전히 대신
- 프로퍼티 선언 시 → val이나 var을 사용
- val : 읽기 전용 프로퍼티
- var: 변경 가능
class Person( val name: String, var isMarried: Boolean )
- 코틀린은 위의 2개의 프로퍼티에 대해 (비공개) 필드와 (공개) 접근자 메소드를 만들어낸다.
- 단 val의 경우 setter는 만들지 않음!
val person - Person("Bob", true)
println(person.name)
println(person.isMarried)
person.isMarried = false
- 클래스 객체 생성 시 new 키워드는 사용하지 않고 생성자 호출
- 프로퍼티 이름을 직접 사용해도 코틀린이 자동으로 게터를 호출해준다.
- var 프로퍼티의 세터도 마찬가지 방식으로 동작
커스텀 접근자
class Rectangle(val height: Int, val width: Int){
val isSquare: Boolean
get() {
return height == width
}
}
fun main() {
val rectangle = Rectangle(10, 10)
println(rectangle.isSquare)
}
- 대부분의 프로퍼티에는 그 프로퍼티의 값을 저장하기 위한 필드 존재
- backing field라고 부름
- 위의 예시와 같이 커스텀 접근자 생성 가능
코틀린 소스코드 구조
- 코틀린 파일의 맨 앞에 package문을 넣을 수 있음
- 그 파일 안에 있는 모든 선언(클래스, 함수 ,프로퍼티 등)이 해당 패키지에 들어간다.
- 다른 파일에서 정의한 선언이라도 같은 패키지에 속한다면 직접 사용 가능
- 다른 패키지의 선언은
import
를 통해 선언을 불러와야함 - 패키지 이름 뒤에 .*를 추가하면 패키지 안의 모든 선언을 import 가능’
- 코틀린에서는 패키지 구조와 디렉터리 구조가 맞아 떨어질 필요가 없음
🎉 알게된 점
- 기존에 안드로이드 개발 시 ViewModel 구조에서 LiveData를 사용
- LiveData의 구조가 이해되지 않았지만 항상 봐왔기 때문에 의문없이 사용
- 이 구조가 커스텀 접근자라는 것을 알게 되었음
참조
KOTLIN IN ACTION
'코틀린' 카테고리의 다른 글
Iteration (0) | 2023.01.26 |
---|---|
선택 표현과 처리 (0) | 2023.01.25 |
함수와 변수 (0) | 2023.01.25 |
What is Kotlin (0) | 2023.01.07 |
🔥코틀린 시작 (0) | 2023.01.06 |