1 분 소요

학습 내용

  1. OOP의 개요
  2. 클래스의 정의
  3. 생성자, 함수, 속성으로 클래스를 정의하는 방법
  4. 객체를 인스턴스화하는 방법
  5. 상속의 정의
  6. IS-A 관계와 HAS-A 관계의 차이점
  7. 속성 및 함수를 재정의하는 방법
  8. 공개 상태 수정자의 정의
  9. 위임의 정의 및 by 위임을 사용하는 방법

클래스의 3요소

  1. 속성. 클래스 객체의 속성을 지정하는 변수입니다.
  2. 메서드. 클래스의 동작과 작업이 포함된 함수입니다.
  3. 생성자. 클래스가 정의된 프로그램 전체에서 클래스의 인스턴스를 만드는 특수 멤버 함수입니다.

클래스 인스턴스 만들기

class SmartDevice {
    // empty body
}

fun main() {
     val smartTvDevice = SmartDevice()
}

클래스 매서드 정의

class SmartDevice {
    fun turnOn() {
        println("Smart device is turned on.")
    }

    fun turnOff() {
        println("Smart device is turned off.")
    }
}
fun main() {
    val smartTvDevice = SmartDevice()
    smartTvDevice.turnOn()
    smartTvDevice.turnOff()
}

클래스 속성 정의

class SmartDevice {
    val name = "Android TV"
    val category = "Entertainment"
    var deviceStatus = "online"
    
    fun turnOn() {
        println("Smart device is turned on.")
    }

    fun turnOff() {
        println("Smart device is turned off.")
    }
}
fun main() {
    val smartTvDevice = SmartDevice()
    println("Device name is: ${smartTvDevice.name}")
    smartTvDevice.turnOn()
    smartTvDevice.turnOff()
}

속성의 getter 함수와 setter 함수

var speakerVolume = 2
    get() = field  
    set(value) {
        field = value    
    }

var speakerVolume = 2
    set(value) {
        if (value in 0..100) {
            field = value
        }
    }

생성자 정의

생성자의 기본 목적은 클래스의 객체를 만드는 방법을 지정하는 것입니다

매개 변수화된 생성자 정의

class SmartDevice(val name: String, val category: String) {

    var deviceStatus = "online"

    fun turnOn() {
        println("Smart device is turned on.")
    }

    fun turnOff() {
        println("Smart device is turned off.")
    }
}

Kotlin의 생성자에는 두 가지 기본 유형이 있습니다.

  1. 기본 생성자. 클래스에는 클래스 헤더의 일부로 정의된 기본 생성자가 하나만 있을 수 있습니다. 기본 생성자는 기본 또는 매개변수화된 생성자일 수 있습니다. 기본 생성자에는 본문이 없습니다. 즉, 코드를 포함할 수 없습니다.

  2. 보조 생성자. 한 클래스에 여러 보조 생성자가 있을 수 있습니다. 매개변수를 포함하거나 포함하지 않고 보조 생성자를 정의할 수 있습니다. 보조 생성자는 클래스를 초기화할 수 있으며 초기화 로직을 포함할 수 있는 본문을 가집니다. 클래스에 기본 생성자가 있는 경우 각 보조 생성자는 기본 생성자를 초기화해야 합니다.

댓글남기기