코딩

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

조강철10 2023. 10. 2. 16:25
반응형

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

 

 

클래스 선언하기

class Person
class Person { }

코틀린에서 클래스는 class 키워드를 사용하여 선언한다.

 

중괄호 영역에 아무것도 없다면 중괄호를 생략할 수 있다.

 

class Person {
	var name = "cho"
    constructor(name : String){
    	this.name = name
    }
    
    fun testFun(){
    	println("name : $name")
    }
    
    class test{ }
}

클래스의 멤버는 생성자, 변수, 함수, 클래스로 구분된다.

클래스 안에 다른 클래스를 선언할 수 있다.

 

 

코틀린에서는 객체를 생성할 때 new 키워드를 사용하지 않는다.

 

val person = Person("Cho")
person.testFun()


name : Cho // 실행결과

 


생성자

 

코틀린에서 클래스는 생성자를 주 생성자와 보조 생성자로 구분한다.

 

주 생성자는 constructor 키워드로 선언하며 필수가 아니지만, 한 클래스에 하나만 가능하다.

 

만약 클래스의 주 생성자를 선언하지 않으면, 매개변수가 없는 주 생성자를 컴파일러가 자동으로 추가한다.

// 주 생성자 선언

class Person constructor() {

}

// cosntructor 생략

class Person() {

}

// 매개변수가 없는 주 생성자

class Person{

}

// 주 생성자의 매개 변수

class Person(name : String , age: Int){

}

 

주 생성자의 본문을 지정하기 위해서는 init 키워드가 필요하다.

 

init 키워드를 사용하면, main 에서 Person 클래스의 객체를 생성할 때 자동으로 init 영역의 코드가 실행된다.


class Person(name : String , age: Int){
	init{
    	println("test..")
    }
}

fun main() {
	val person = Person("cho", 40)
}


// 실행 결과
test..

 

 

생성자의 매개변수는 기본적으로 생성자에서만 사용 가능한 지역 변수이다.

 

하지만 var, val 키워드를 사용하여 클래스의 멤버 변수로 사용이 가능하다.

 

 

// 생성자의 지역변수

class Person(name : String, age : Int){
 	....
}


// 클래스 멤버변수 사용

class Person(val name : String, val age : Int){
 	...
}

 

 

보조 생성자는 클래스의 본문에 constructor 키워드를 사용하여 선언할 수 있다.

 

여러 개 추가가 가능하다.

 

class Person{


    constructor(name : String){
    
    }
    
    constructor(name : String, age : Int){
    
   	}
}

 

 

만약 클래스에 주 생성자와 보조 생성자를 모두 선언하게 된다면 오류가 발생한다.

 

class Person(name : String){
	constructor(name : String, age : Int) { // 오류 발생
    	...
    }
}

 

오류를 해결하기 위해선 this()를 사용해주어야 한다.

 

class Person(name : String){
	constructor(name : String, age : Int): this(name) { // 오류 해결
    	...
    }
}
반응형