Android

[Kotlin] 코틀린 - 클래스, 생성자

귀뚜래미 2024. 8. 1. 17:34
728x90

클래스

- 클래스의 멤버는 생성자, 변수, 함수, 클래스

- 클래스 안에 다른 클래스 선언 가능

 

fun main() {
    var user = User("Kim", 27)	
    user.introduce()	// name : Kim, age : 28
}

class User(name: String, age: Int){
    var name: String
    var age: Int
    init {
        this.name = name
        this.age = age
    }

    fun introduce(){
        println("name : ${name}, age : ${age}")
    }

    class Nothing{

    }
}

 

 

주 생성자

- init 키워드를 이용해 주 생성자의 본문을 구현함

- 코틀린 클래스 안에서 init 키워드로 지정한 영역은 객체를 생성할 때 자동으로 실행됨. 주 생성자의 본문을 구현하고 싶을 때 사용

fun main() {
    var user = User("Kim", 27) // 객체가 먼저 생성되면서 "Initializing...." 문자열 출력
    user.introduce()	// 객체 생성 이후 name : Kim, age : 27 문자열 출력
}

class User(name: String, age: Int){
    var name: String
    var age: Int
    init {
        this.name = name
        this.age = age
        println("Initializing....")
    }

    fun introduce(){
        println("name : ${name}, age : ${age}")
    }
}

 

- 아래 코드와 같이 생성자의 매개변수를 클래스의 멤버 변수로 선언할 수도 있다.

- 생성자 매개변수는 생성자 안에서만 사용 가능하지만 val, var 키워드로 선언하면 클래스의 멤버 변수로 사용이 가능하다. 

fun main() {
    var user = User("Kim", 27)
    user.introduce() // name : Kim, age : 27 문자열 출력
}

class User(val name: String, val age: Int){
    fun introduce(){
        println("name : ${name}, age : ${age}")
    }
}

 

 

 

보조 생성자

- 클래스 본문에 constructor 키워드로 선언하는 함수이다. 클래스 본문에 선언하기 때문에 여러 개를 추가할 수 있다.

fun main() {
    var user1 = User("Park")    // 매개변수 1개짜리 : Park
    var user2 = User("Kim", 27) // 매개변수 2개짜리 : Kim, 27
}

class User{
    constructor(name: String){
        println("매개변수 1개짜리 : $name")
    }

    constructor(name: String, age: Int){
        println("매개변수 2개짜리 : $name, $age")
    }
}

 

- 보조 생성자에서 주 생성자를 호출할 경우 아래와 같이 한다.

- 주 생성자가 이미 있고 보조 생성자가 여러개라면 this를 통해 주 생성자를 호출시켜야 한다.

fun main() {
    var user = User("Kim", 27, "mail@mail.com")
    // 매개변수 2개짜리 : Kim, 27
    // 매개변수 3개짜리 : Kim, 27, mail@mail.com
}

class User(name: String){
    constructor(name: String, age: Int): this(name){
        println("매개변수 2개짜리 : $name, $age")
    }

    constructor(name: String, age: Int, email: String): this(name, age){
        println("매개변수 3개짜리 : $name, $age, $email")
    }
}
728x90