코틀린의 클래스
2022/10/04(화요일)
코틀린 클래스
코틀린에서 클래스는 class 키워드로 선언한다. 다은 코드에서 class User부분이 클래스의 선언부이며 중괄호 { } 영역이 본문이다. 만약 클래스의 본문에 입력하는 내용이 없다면 { }를 생략할 수 있다.
class User { }
클래스의 멤버는 생성자, 변수, 함수, 클래스로 구성된다. 이 중에서 코틀린의 생성자는 constructor라는 키워드로 선언하는 함수이다. 그리고 클래스 안에 다른 클래스를 선언할 수도 있다.
class User{
var name = "kkang"
constructor(name : String){
this.name = name
}
fun someFun(){
println("name : ${name}")
}
class SomeClass { }
}
클래스는 객체를 생성해 사용하며 객체로 클래스의 멤버에 접근한다. 그런데 코틀렌에서는 객체를 생성할 때 new 키워드를 사용하지 않는다. 오른쪽 코드에서 User(”kim”)이 객체를 생성하는 구문이며 클래스 이름과 같은 함수로 객체를 생성한다.
- 객체 생성과 멤버 접근
val user = User("kim")
user.someFun()
객체를 생성할 때 생성자가 자동으로 호출되므로 소괄호 안에 전달한 인자는 클래스에 선언된 생성자의 매개변수와 들어맞아야 한다. 앞에서 작성한 user 클래스의 생성자는 constructor(name : String)이므로 문자열 데이터를 전달받는 매개변수가 있다. 따라서 객체를 생성할 때 User(”kim”)처럼 문자열 데이터를 전달해 주어야 한다.
주 생성자
코틀린 클래스는 생성자를 주 생성자와 보조 생성자로 구분된다. 한 클래스 안에 주 생성자만 선언할 수도 있고 보조 생성자만 선언할 수도 있다. 물론 둘 다 선언할 수도 있다.
- 주 생성자 선언
class User constructor(){
}
주 생성자는 constructor 키워드로 클래스 선언부에 선언한다. 주 생성자 선언은 필수는 아니며 한 클래스에 하나만 가능하다.
주 생성자를 선언할 때 constructor 키워드는 생략할 수 있다.
- constructor 키워드 생략 예
class User(){
}
만약 개발자가 클래스의 주 생성자를 선언하지 않으면 컴파일러가 매개변수가 없는 주 생성자를 자동으로 추가한다.
- 매개변수가 없는 주 생성자 자동 선언
class User{
}
주 생성자의 매개변수
주 생성자를 선언할 때 필요에 따라 매개변수를 선언할 수도 있다.
- 주 생성자의 매개변수
class User(name : String, count : Int){
}
앞의 코드는 User 클래스를 선언하면서 주 생성자에 매개변수를 2개 선언했다. 그러면 객체를 생성할 때 매개변수의 타입과 개수에 맞는 인자를 전달해야 한다.
- 매개변수가 있는 생성자 호출
val user = User("lh99j", 10)