English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin 클래스와 객체

이 문서에서는 Kotlin의 객체 지향 프로그래밍을 소개할 것입니다. 클래스는 무엇인지, 객체를 생성하는 방법, 그리고 프로그램에서 그것을 사용하는 방법을 배울 것입니다.

Kotlin은 함수와 객체 지향 프로그래밍을 지원합니다.

Kotlin은 다음과 같은 것들을 지원합니다:고차 함수함수형식라ム다 함수클래스의함수이는 함수형 프로그래밍 스타일을 사용하는 데 최적의 선택이 됩니다. 이러한 개념에 대해 후속 장에서 배울 것입니다. 이 문서에서는 Kotlin의 객체 지향 프로그래밍 스타일을 주로 소개할 것입니다.

객체 지향 프로그래밍(OOP)

面向对象的编程风格에서는, 복잡한 문제를 작은 집합으로 나누기 위해 객체를 생성할 수 있습니다.

이 객체는 두 가지 특징을 가집니다:

  • 상태

  • 행동

몇 가지 예제를 들어보겠습니다:

  1. Lamp(불)은 객체입니다

    • on(켜짐) 또는 off(끄임) 상태가 될 수 있습니다.

    • turn on(켜기)와 turn off(끄기)(행동)을 할 수 있습니다.

  2. Bicycle은 객체입니다

    • 변속기, 두 개의 바퀴, 기어 수 등의 상태가 있습니다.

    • 브레이크, 가속, 변속 등의 행동이 있습니다.

面向对象编程의 상세 기능을 학습할 것입니다. 예를 들어:데이터 포장thừa kế 다형성이 문서는 기본 지식을 중심으로 설명할 것입니다.

Kotlin 클래스

Kotlin에서 객체를 생성하기 전에 클래스를 정의해야 합니다.

클래스는 객체의 블루프린트입니다.

클래스는 집의 스케치(원형)로 볼 수 있습니다. 바닥, 문, 창 등의 모든 상세 정보가 포함되어 있습니다. 이 설명을 기반으로 집을 짓습니다. 집은 객체입니다.

같은 설명으로 많은 집을 짓을 수 있기 때문에, 하나의 클래스를 기반으로 많은 객체를 생성할 수 있습니다.

Kotlin에서 클래스를 어떻게 정의할 수 있습니까?

Kotlin에서 클래스를 정의하려면 class 키워드를 사용할 수 있습니다:

class ClassName {
    // 속성
    // 멤버 함수
    ... .. ...
}

이는 예제입니다:

class Lamp {
    //예제: Kotlin 클래스와 객체
    private var isOn: Boolean = false
    // 멤버 함수
    fun turnOn() {
        isOn = true
    }
    // 멤버 함수
    fun turnOff() {
        isOn = false
    }
}

여기서는 Lamp이라는 이름의 클래스를 정의했습니다.

이 클래스는 isOn(변수와 같은 정의 방식으로 정의된) 속성과 turnOn() 및 turnOff() 두 개의 멤버 함수를 가집니다.

Kotlin에서는 속성을 초기화하거나 abstract로 선언해야 합니다. 위의 예제에서는 isOn 속성이 false로 초기화되었습니다.

클래스, 객체, 속성, 멤버 함수 등은 가시성 수정자를 가질 수 있습니다. 예를 들어, isOn 속성은 사적인 것입니다. 이는 Lamp 클래스 내에서만 isOn 속성을 변경할 수 있다는 의미입니다.

다른 가시성 수정자는 다음과 같습니다:

  • private - 제한된으로만 가시합니다 (접근할 수 있습니다).

  • public - 모든 곳에서 가시합니다.

  • protected - 클래스 및 그 서브 클래스에 대해 가시합니다.

  • internal - 모듈 내의 모든 클라이언트가 접근할 수 있습니다.

당신은 나중에 이를Kotlin 가시성 수정자이 문서에서 protected와 internal 수정자를 이해합니다.

가시성修饰자가 지정되지 않았을 경우, 기본적으로 public 값으로 설정됩니다.

위의 프로그램에서 turnOn()와 turnOff() 멤버 함수는 공공의입니다. 반면에 isOn 속성은 사적인 것입니다.

Kotlin 객체

클래스를 정의할 때는 객체의 규범만 정의합니다; 메모리나 저장 공간을 할당하지 않습니다.

을 생성합니다. 클래스에서 정의된 멤버에 접근하려면 객체를 생성해야 합니다. Lamp 클래스의 객체를 생성해 보겠습니다.

class Lamp {
    // 속성(데이터 멤버)
    private var isOn: Boolean = false
    // 멤버 함수
    fun turnOn() {
        isOn = true
    }
    // 멤버 함수
    fun turnOff() {
        isOn = false
    }
}
fun main(args: Array<String>) {
    println("$lamp 불은 꺼져 있습니다.")1 val l // = Lamp()1Lamp 클래스의 l
    println("$lamp 불은 꺼져 있습니다.")2 val l // = Lamp()2Lamp 클래스의 l
}

이 프로그램은 두 개의 객체 l1와 l2Class Lamp. isOn 두 개의 불을 제어하는 속성1와 l2false로 설정됩니다.

을 호출하여 . 문자를 사용하여 클래스의 속성과 멤버 함수에 접근할 수 있습니다. 예를 들어,

불이 켜져 있습니다.1객체

이 문장은 객체 l1 의 turnOn() 함수.

다른 예제를 들어보겠습니다:

불이 켜져 있습니다.2을 할당합니다.

.isOn = true2 여기서, 우리는 객체 l

의 isOn 속성. 주의하세요, isOn 속성은 private이므로 클래스 외부에서 isOn에 접근하려고 하면 예외가 발생합니다.

class Lamp {
    // 예제: Kotlin 클래스와 객체
    private var isOn: Boolean = false
    // 멤버 함수
    fun turnOn() {
        isOn = true
    }
    // 멤버 함수
    fun turnOff() {
        isOn = false
    }
    속성(데이터 멤버)
        if (isOn == true)
            fun displayLightStatus(lamp: String) {
        else
            println("$lamp 불은 켜져 있습니다.")
    }
}
fun main(args: Array<String>) {
    println("$lamp 불은 꺼져 있습니다.")1 val l // = Lamp()1Lamp 클래스의 l
    println("$lamp 불은 꺼져 있습니다.")2 val l // = Lamp()2Lamp 클래스의 l
    불이 켜져 있습니다.1객체
    불이 켜져 있습니다.2.turnOn()
    불이 켜져 있습니다.1.turnOff()1.displayLightStatus("l
    불이 켜져 있습니다.2.turnOff()2.displayLightStatus("l
}

이 프로그램을 실행할 때, 출력은 다음과 같습니다:

불이 켜져 있습니다.1 }
불이 켜져 있습니다.2 불이 꺼져 있습니다.

위 프로그램에서:

  • Lamp 클래스가 생성되었습니다.

  • 이 클래스는 isOn 속성과 turnOn()، turnOff() 및 displayLightStatus() 세 가지 멤버 함수를 가지고 있습니다.

  • main() 함수에서 Lamp 클래스의 두 개의 객체 L1와 L2.

  • 여기서, l1객체 l1.turnOn()를 호출하여 turnOn() 함수를 호출합니다. 이 메서드는 l1객체의 isOn 인스턴스 변수를 true로 설정합니다.

  • 동시에, l2 객체: l2.turnOff()를 호출하여 turnOff() 함수를 호출합니다. 이 메서드는 l2객체의 isOff 인스턴스 변수를 false로 설정합니다.

  • 그런 다음, l1와 l2객체가 displayLightStatus() 함수를 호출하면, 이 함수는 isOn 속성이 true인지 false인지에 따라 적절한 메시지를 출력합니다.

주의하세요, 클래스 내에서 isOn 속성은 false로 초기화됩니다. 이 클래스의 객체를 생성할 때, 해당 객체의 isOn 속성은 자동으로 false로 초기화됩니다. 따라서 l2 객체가 turnOff()를 호출하면 isOn 속성이 false로 설정됩니다.

예를 들어:

class Lamp {
    // 속성(데이터 멤버)
    private var isOn: Boolean = false
    // 멤버 함수
    fun turnOn() {
        isOn = true
    }
    // 멤버 함수
    fun turnOff() {
        isOn = false
    }
    fun displayLightStatus() {
        if (isOn == true)
            println("불이 켜져 있습니다.")
        else
            println("불이 꺼졌습니다.")
    }
}
fun main(args: Array<String>) {
    val lamp = Lamp()
    lamp.displayLightStatus()
}

이 프로그램을 실행할 때, 출력은 다음과 같습니다:

불이 꺼졌습니다.

이 문서는 Kotlin의 대상 프로그래밍 기본 지식입니다.