객체 생성과 함께 호출되는 함수이다.
주 생성자와 보조 생성자로 구분한다.
class User constructor() { }
class User() { }
class User(name: String, count: Int) { }
init키워드로 지정한 영역은 객체를 생성할 때 자동으로 실행된다.
일반적으로 주 생성자의 본문을 구현하는 용도로 사용한다.
class User(name: String, count:Int) {
init {
println("init")
}
}
class User(val name: String, val count: Int) {
fun someFun() {
println("name : $name, count : $count)
}
}
매개변수 앞에 var, val을 붙여서 바로 사용할 수 있다.
그렇지 않은 경우 매개변수는 init { } 에서만 사용이 가능하다.
class User {
constructor(name: String) {...}
constructor(name: String, count: Int) {...}
}
여러개 선언 가능하다.
주 생성자와 보조 생성자를 모두 선언한다면 반드시 생성자끼리 연결이 필요하다.
class User(name: String) {
constructor(name: String, count:Int) : this(name) {...}
}
보조 생성자가 주 생성자를 호출한다.
클래스를 선언할 때 다른 클래스를 참조해서 선언하는 것
open 키워드를 사용해 상속을 허용
open class Super(name: String) {}
class Sub(name: String): Super(name) {}
하위 클래스 생성자는 상위 클래스 생성자를 호출해야 한다.
상위 클래스에 정의된 멤버를 하위 클래스에서 재정의 하는 것
재사용할 함수에는 open, override 키워드를 사용
open class Super {
open var data = 10
open fun Fun() {...}
}
class Sub: Super() {
override var data = 20
override fun Fun() {...}
}
데이터 클래스, 오브젝트 클래스, 컴패니언 클래스
https://eunoia3jy.tistory.com/154
equals()함수는 주 생성자에 선언한 멤버 변수의 데이터만 비교 대상으로 삼는다
toString() 함수는 객체가 포함하는 멤버 변수의 데이터를 출력
익명 클래스를 만들 목적으로 사용
자바의 static과 유사함.