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
'Android' 카테고리의 다른 글
[Kotlin] 코틀린 - 클래스 종류 (0) | 2024.08.02 |
---|---|
[Kotlin] 코틀린 - 상속 (0) | 2024.08.02 |
[Kotlin] 코틀린 - 반복문 (0) | 2024.08.01 |
[Kotlin] 코틀린 - 조건문 (0) | 2024.08.01 |
[Kotlin] 코틀린 - 컬렉션 타입(Array, List, Set, Map) (0) | 2024.08.01 |