코틀린 문법 (2)

k_hyun·2023년 1월 25일
0

생성자

객체 생성과 함께 호출되는 함수이다.
주 생성자와 보조 생성자로 구분한다.

주 생성자

class User constructor() { }
class User() { }
class User(name: String, count: Int) { }

init

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과 유사함.

0개의 댓글