Search
castle

conventions

  • . 으로 상/하위 패키지 구분
  • 패키지 선언 : package 키워드와 함께 패키지 이름을 기술, 맨 위에 위치
  • 소문자로 작성
  • 회사 도메인의 역순으로 작성
  • 마지막에는 프로젝트 이름을 붙여줌
package com.example.tlftest.utils
  • import
  • * : all
package com.example.main

import com.example.utils.Person
import com.example.utils.*

접근 지정자(Visibility Modifier), scope

  • internal : default(java)
  • default : public
지정자 같은 클래스 서브클래스 같은 모듈 외부
public
private
protected
internal

Top-level 함수/변수

  • 최상단에 선언
  • global 개념
private val apiKey = "Secret"

Object

  • object
  • 단 하나만 존재하는 객체
  • 프로그램 전체에서 오직 하나만 생성
  • 인스턴스화 없이 프로퍼티와 메서드 호출 가능(static)
  • . 연산자로 호출
  • 대문자 시작
object MathUtil {
	fun add(a: Int, b: Int) = a * b
	fun square(x: Int) = x * x
}

fun main() {
	println(MathUtil.add(3, 5))
	println(square(5))
}

companion object

  • ClassMethod
  • 일반 클래스 안에 object 기능 추가
  • 클래스 내부 정의
  • 클래스명으로 접근 가능
  • 클래스 공유
class A {
		companion object {
				fun bar() {
						println("Companion object called")
				}
		}
}

fun main() {
    A.bar()
}

class User private constructor(val nickname: String) {
    companion object {
        fun newSubscribingUser(email: String) =
            User(email.substringBefore('@'))

        fun newFacebookUser(accountId: Int) =
            User(getFacebookName(accountId))
    }
}

fun main(args: Array<String>) {
    val subscribingUser = User.newSubscribingUser("bob@gmail.com")
    val facebookUser = User.newFacebookUser(4)
    println(subscribingUser.nickname)
}
left
right

C

Contents