[기술 면접 질문] 클래스 구성 요소

0

기술 면접 준비

목록 보기
18/19
post-thumbnail

[기술 면접 질문] 클래스 구성 요소

(1) 클래스 선언

  • 클래스 선언 키워드(class)를 사용하여 클래스 선언
  • 클래스의 이름은 일반적으로 파스탈 케이스(Pascal case)를 따름

(2) 생성자

  • 클래스 이름 옆에 constructor 키워드를 사용하여 생성자 선언
    • 디폴트 접근 제어자: public
    • public 생성자는 constructor 키워드 생략 가능
  • 클래스는 최대 하나의 기본 생성자와 여러 개의 보조 생성자를 가질 수 있다.
  • (2-1) 기본 생성자(primary constructor)
    • 클래스의 선언부(head) 위치
  • (2-2) 보조 생성자(secondary constructor)
    • 클래스의 내부(body) 위치
    • 클래스에 기본 생성자가 있을 경우, 보조 생성자는 this를 이용하여 객체 생성 위임

(3) 초기화 블록:

  • 객체 생성 시 실행되는 블록
    • 초기화 로직 실행하기 위해 선언
  • 초기화 블록은 기본 생성자의 일부
    -> 항상 보조 생성자 내부 블록보다 먼저 실행됨

(4) 멤버 변수(property)

  • 클래스 내부에 변수를 선언하여 클래스의 상태를 나타냄

(5) 메서드(method)

  • 클래스 내부에 함수를 선언하여 메서드 정의
  • 메서드에서는 클래스 내부의 모든 멤버 변수 접근 가능
// (1) 클래스 선언
// (2-1) primary constructor 사용 (constructor 키워드 생략됨)
class Person(val name:String){
    // (4) 멤버 변수(프로퍼티)
    var age:Int? = null
    val introduction: String
    
    //(3) 초기화 블록
    init{
        println("초기화 블록 호출됨")
        introduction = "안녕하세요, 제 이름은 ${name} 입니다."
    }
    
    // (2-2) secondary constructor
    constructor(name:String, age:Int): this(name){
        println("보조 생성자 호출됨")
        this.age = age
    }
    
    // (5) 메서드
    fun introduce() = println(introduction)
}

fun main(){
    val person = Person("홍길동", 99)
    // 출력 값:
    // 초기화 블록 호출됨
	  // 보조 생성자 호출됨
    person.introduce()
    // 출력 값: 안녕하세요, 제 이름은 홍길동 입니다.
}
profile
Be able to be vulnerable, in search of truth

0개의 댓글