[기술 면접 질문] 클래스 구성 요소
(1) 클래스 선언
- 클래스 선언 키워드(class)를 사용하여 클래스 선언
- 클래스의 이름은 일반적으로 파스탈 케이스(Pascal case)를 따름
(2) 생성자
- 클래스 이름 옆에 constructor 키워드를 사용하여 생성자 선언
- 디폴트 접근 제어자: public
- public 생성자는 constructor 키워드 생략 가능
- 클래스는 최대 하나의 기본 생성자와 여러 개의 보조 생성자를 가질 수 있다.
- (2-1) 기본 생성자(primary constructor)
- (2-2) 보조 생성자(secondary constructor)
- 클래스의 내부(body) 위치
- 클래스에 기본 생성자가 있을 경우, 보조 생성자는 this를 이용하여 객체 생성 위임
(3) 초기화 블록:
- 객체 생성 시 실행되는 블록
- 초기화 블록은 기본 생성자의 일부
-> 항상 보조 생성자 내부 블록보다 먼저 실행됨
(4) 멤버 변수(property)
- 클래스 내부에 변수를 선언하여 클래스의 상태를 나타냄
(5) 메서드(method)
- 클래스 내부에 함수를 선언하여 메서드 정의
- 메서드에서는 클래스 내부의 모든 멤버 변수 접근 가능
class Person(val name:String){
var age:Int? = null
val introduction: String
init{
println("초기화 블록 호출됨")
introduction = "안녕하세요, 제 이름은 ${name} 입니다."
}
constructor(name:String, age:Int): this(name){
println("보조 생성자 호출됨")
this.age = age
}
fun introduce() = println(introduction)
}
fun main(){
val person = Person("홍길동", 99)
person.introduce()
}