코딩
[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) { // 오류 해결
...
}
}
반응형