Property와 소스 코드 구조 및 디렉터리와 패키지

OH JU HYEON·2022년 7월 12일

Kotlin

목록 보기
3/6
post-thumbnail

Property와 소스 코드 구조 및 디렉터리와 패키지

Property

설명

프로퍼티를 설명하기 전에 Java에 대해 먼저 설명한다.

일단, Class 개념의 목적은 데이터 캡슐화에 있다. 조금 더 자세히 말하면 데이터 캡슐화를 통해 데이터를 다루는 코드를 한 주제에 가두는 것을 목적으로 한다.

Java에서는 데이터를 field에 저장하고 멤버 필드의 가시성은 보통 private이다. 즉, 자신을 사용하는 클라이언트가 그 데이터에 접근하는 통로를 접근자 메서드로 통제한다.

field를 읽기 위해서는 getter를 제공하고 필드 변경을 허용하는 경우엔 setter를 제공한다.

Java에서는 이런 field와 접근자를 묶어서 Property라고 한다.

Kotlin의 프로퍼티는 Java의 field의 접근자 메서드를 완전 대신한다.

val이나 var를 사용하는데 val은 읽기 전용이고 var로 선언한 프로퍼티는 변경이 가능하다.

예시

val name: String,
var isMarried: Boolean

책에서 제공하는 예제를 참고하면 val은 읽기 전용 프로퍼티로 비공개 필드와 필드를 읽는 단순한 getter를 만들어낸다. var은 사용 가능한 프로퍼티로 비공개 필드와 gettersetter를 만들어낸다.

소스 코드 구조 및 디렉터리와 패키지

설명

Java 경우 모든 클래스를 패키지 단위로 관리한다. Kotlin 역시 파일 맨 앞에 package문을 넣을 수 있다. 그러면 그 파일 안에 있는 모든 선언(클래스, 함수, 프로퍼티) 등이 해당 패키지에 들어가게 된다.

예시

package kotlinBasic

import java.util.Random

class Rectangle(val height: Int, val width: Int) {
    val isSquare: Boolean
        get() = height == width
}

fun createRandomRectangle(): Rectangle {
    val random = Random()
    return Rectangle(random.nextInt(), random.nextInt())
}

맨 위에서 패키지를 선언해주고 표준 바라 라이브러리 클래스 java.util.Random를 임포트한다. Kotlin은 Java와 완벽 호환이 된다.

Kotlin에서는 클래스 임포트와 함수 임포트에 차이가 없고 모든 선언을 import를 통해 가져오게 된다. 최상위 함수인 경우 이름을 써서 임포트할 수 있다.ㅣ

import kotlinBasic.createRandomRectangle

fun main(args: Array<String>) {
    println(createRandomRectangle().isSquare)
}

메인 함수에서 출력을 해 준다. 아주 작은 확률로 true가 출력된다.

주의

import 할 때 패키지 뒤에 *를 넣어주면 패키지 안의 모든 선언을 임포트할 수 있다. 이런 것을 star import라고 하는 것 같은데 스타 임포트를 사용하면 모든 클래스뿐 아니라 최상위에 정의된 함수나 프로퍼티까지 모두 불러온다는 점을 주의해야 한다.

profile
읽기만 해도 이해가 되는 글을 쓰기 위해 노력합니다.

0개의 댓글