Backend
home

4. 클래스 프로퍼티

생성일
2025/01/24 15:42
태그
Kotlin

클래스

Java Class
public class Person { private final String name; public Person(String name) { this.name = name; } public String getName() { return name; } }
Java
복사
Kotlin Class
class Person(val name: String)
Kotlin
복사
엄청 간결하다! (생성자와 프로퍼티 정의가 한번에 진행됨)
접근 제어자(public/private) 없음 → 기본 제어자가 public 이라 생략 가능

프로퍼티

// 이미 Getter와 Setter를 만들어 줌 class Person( val name: String, val isMarried: Boolean )
Kotlin
복사
(예외) Boolean property의 차이점
Java: getter(isMarried()), setter(setMarried())
Kotlin: getter/setter(isMarried)
// java public static void main(String[] args) { Person person = new Person("abc", true); System.out.println(person.getName()); System.out.println(person.isMarried()); } // kotlin fun main(args: Array<String>) { val person = Person("abc", true) println(person.name) println(person.isMarried) }
Kotlin
복사
커스텀 접근자(Custom getter/setter)
class Rectangle(val height, val width: Int) { val isSquare: Boolean get() { return height == width } }
Kotlin
복사
함수(fun isSquare(): Boolean)로 정의할 수 있으나, 이 값은 클래스의 프로퍼티(특성)을 나타내주는 값이므로 커스텀 getter를 통한 프로퍼티 값을 드러내는 것이 조금 더 자연스럽다.
디렉토리와 패키지
package com.zero import java.util.* class Rectangle(val height: Int, val width: Int) { val isSquare: Boolean get() { return height == width } } fun createRandomRectangle(): Rectangle { val random = Random() return Rectangle(random.nextInt(), random.nextInt()) }
Kotlin
복사
패키지와 import 문장은 Java와 거의 유사함
최상위 함수의 import
import com.zero.createRandomRectangle fun main(args: Array<String>) { println(createRandomRectangle().isSquare) }
Kotlin
복사
최상위 함수는 위처럼 함수명으로 import 가능
패키지 구조와 클래스 선언
package com.zero.one class ZeroOne(val base: String) class ZeroSecond(val base: String)
Kotlin
복사
자바와 다르게 코틀린은 디렉토리 구조와 패키지 경로가 다를 수 있음
파일 하나에 여러 클래스와 함수, 최상위 변수 모드 선언 가능
코틀린에서 매우 편리하고 자주 활용되는 부분
크기가 작은 클래스나 성격이 비슷한 클래스, enum 등을 모아놓으면 관리하기가 편하고 한눈에 보기 좋음