사전캠프 18일차

김재현·2024년 2월 23일
  • 클래스는 그룹화할 수 있는 함수와 변수를 한군데에 모아 놓고 사용하는 것입니다.

  • 클래스의 기본 구조는 다음과 같습니다.

class 클래스명 {
    var 변수명
    fun 함수() {
    //코드
        }
}
  • 클래스를 만들기 위해서는 클래스의 이름을 정하고 이름 앞에 class를 붙여서 만드는데 클래스의 범위를 지정하는 중괄호 {}(Scope)를 클래스에서는 클래스 스코프라고 합니다.

프라이머리 생성자

  • 프라이머리 생성자는 클래스의 헤더처럼 사용 가능하며 constructor 키워드를 사용해 정의합니다.(조건에 따라 생략가능, 함수이기에 파라미터 사용가능)
class Person constructor(value: String){
    // code
}
  • 클래스의 생성자가 호출되면 init 블록의 코드가 실행되고 init 블록에서는 생성자를 통해 넘어온 파라미터에 접근할 수 있습니다.
class Person constructor(value: String) {
    init{
    // code
    }
}
  • init 초기화 작업이 필요하지 않다면 init 블록을 작성하지 않아도 되고 대신 파라미터로 전달된 값을 사용하기 위해서는 파라미터 앞에 변수 키워드인 val을 붙여주면 클래스 스코프 전체에서 해당 파라미터가 사용 가능합니다.

ex)

class Person(val value: String) {
     fun process() {
         print(value)
     }
}

세컨더리 생성자

  • 세컨더리 생성자는 constructor 키워드를 함수처럼 클래스 스코프 안에 직접 작성할 수 있습니다.

  • 세컨더리 생성자는 init 블록을 작성하지 않고 constructor 다음에 괄호를 붙여 코드를 작성할 수 있고 파라미터의 개수, 타입이 다르다면 중복해서 만들 수 있습니다.

ex)

class Kotlin {
    constructor (value: String) {
        // code
    }
    constructor (value: Int) {
        // code
    }
    constructor (value1: Int, value2: String) {
        // code
    }
}

Default 생성자

  • 생성자는 작성하지 않을 경우 파라미터가 없는 프라이머리 생성자가 하나 있는 것과 동일합니다.

ex)

class Student { // 생성자를 작성하지 않아도 기본 생성자가 동작합니다.
    init {
        // 기본 생성자가 없더라도 초기화가 필요하면 여기에 코드를 작성합니다.
    }
}

클래스의 사용

  • 클래스의 이름에 괄호를 붙여서 클래스의 생성자를 호출합니다. - 클래스()

  • 파라미터 없이 클래스명에 괄호를 붙여주면 생성자가 호출되면서 init 블록 안의 코드가 실행됩니다.

  • 클래스의 생성자를 호출한 후 생성되는 것을 인스턴스(Instance)라고 하는데 생성된 인스턴스는 변수에 담아둘 수 있습니다.

  • 생성자에 파라미터가 있다면 값을 입력해서 호출해야 합니다.

  • 클래스 안에 정의된 변수는 프로퍼티라고 하고 함수는 메서드라고 부릅니다. 클래스 내부 함수에 정의된 변수는 프로퍼티가 아닌 변수(지역 변수)라고 합니다.

  • 클래스를 만들어 프로퍼티와 메서드를 사용해보겠습니다.

  1. 클래스와 프로퍼티, 메서드 생성
class Pig {
    var name: String = "Pinky"
    fun printName() {
        Log.d("class", "Pig의 이름은 ${name}입니다.")
    }
}
  1. 변수 pig에 인스턴스화해서 담기
var pig = Pig()
  1. 인스턴스가 담긴 변수명 뒤에 도트 연산자 붙여서 사용하기
pig.name()
pig.printName()

0개의 댓글