객체선언, object
object Game{
init {
println("방문을 환영합니다.")
}
fun play() {
while(true) {
}
}
}
fun main(args: Array<String>) {
Game.play()
}
객체 표현식
val abandonedTownSquare = object : TownSquare() {
override fun load() = "환영받을 것을 예상헀겠지만 여기는 아무도 없군요...")
}
동반 객체, companion object
class PremadeWorldMap {
...
companion object {
private const val MAPS_FILEPATH = "nyethack.maps"
fun load() = File(MAPS_FILEPATH).readBytes()
}
}
PremadeWorldMap.load()
중첩 클래스
- 클래스 내부에서 정의된 클래스
- 이름ㅇ르 가짐
- 다른 클래스에서는 사용되지 않고, 해당 클래스 내부에서만 사용되는 경우
내부클래스, inner
- 이름을 가짐
- 외부 클래스의 인스턴스가 있어야만 인스턴스화 할 수 있음
- 외부 클래스의 속성에 자유롭게 접근 가능
데이터 클래스, data
enum 클래스
enum class Direction{
NORTH,
EAST,
SOUTH,
WEST
}
fun getDirectionName(direction: Direction) = when(direction){
Direction.NORTH -> "북"
Direction.EAST -> "동"
Direction.SOUTH -> "남"
Direction.WEST -> "서"
}
enum class Direction(private val str) {
NORTH("북"),
EAST("동"),
SOUTH("남"),
WEST("서")
}