Kotlin/포스팅

코틀린 클래스 정의

짜집퍼박사(짜박) 2023. 12. 25. 17:21

코틀린에서 클래스를 정의하는 방법은 자바와 유사하며, 몇 가지 향상된 기능을 제공합니다. 아래는 코틀린에서 클래스를 정의하는 기본 구조와 주요 특징에 대한 설명입니다.

 

1. 기본 클래스 정의

class MyClass {
    // 클래스 멤버 정의
}

-  class 키워드를 사용하여 클래스를 정의합니다.
-  클래스 이름은 Pascal 표기법(각 단어의 첫 글자를 대문자로)으로 작성합니다.

 

2. 클래스 멤버 정의

클래스 내부에는 다양한 종류의 멤버를 정의할 수 있습니다.

class MyClass {
    // 프로퍼티 (속성)
    var myProperty: String = "Hello"

    // 메서드
    fun myMethod() {
        println(myProperty)
    }

    // 생성자
    constructor()

    // 초기화 블록
    init {
        println("Initializing MyClass")
    }
}

-  var 키워드를 사용하여 가변 프로퍼티를 정의하고, val 키워드를 사용하여 불변 프로퍼티를 정의합니다.
-  메서드는 fun 키워드를 사용하여 정의합니다.
-  클래스는 생성자를 가질 수 있습니다. constructor 키워드는 생략 가능하며, 주요 생성자는 클래스 헤더에 바로 위치할 수 있습니다.
-  초기화 블록(init)은 클래스 인스턴스가 생성될 때 실행되는 블록입니다.

 

3. 프로퍼티와 생성자

class Person(val name: String, var age: Int) {
    // 클래스 멤버 정의
}

-  주요 생성자를 클래스 헤더에서 바로 정의할 수 있습니다.
-  주요 생성자에서 바로 프로퍼티를 정의할 수 있습니다. 이 경우 생성자 파라미터의 val 또는 var 키워드를 사용하면 클래스 멤버로 자동으로 생성됩니다.

 

4. 상속

open class Animal(val name: String) {
    fun makeSound() {
        println("Some generic sound")
    }
}

class Dog(name: String) : Animal(name) {
    override fun makeSound() {
        println("Woof! Woof!")
    }
}

-  클래스는 기본적으로 상속이 금지되어 있으므로, 상속 가능하도록 하려면 open 키워드를 사용하여 클래스를 선언합니다.
-  상속 받을 클래스는 콜론(:) 뒤에 상위 클래스를 명시하고, 상위 클래스의 생성자를 호출하는 등의 작업이 필요합니다.
-  메서드를 오버라이드하려면 override 키워드를 사용합니다.

 

5. 추상 클래스

abstract class Shape(val name: String) {
    abstract fun area(): Double
}

class Circle(name: String, val radius: Double) : Shape(name) {
    override fun area(): Double {
        return Math.PI * radius * radius
    }
}

-  추상 클래스는 abstract 키워드를 사용하여 정의됩니다.
-  추상 메서드는 선언만 하고 본문이 없는 메서드로, 하위 클래스에서 반드시 구현되어야 합니다.

 

6. 인터페이스

interface Printable {
    fun print()
}

class Document : Printable {
    override fun print() {
        println("Printing document")
    }
}

-  인터페이스는 interface 키워드를 사용하여 정의됩니다.
-  클래스에서 인터페이스를 구현하려면 : 뒤에 인터페이스를 명시하고, 구현할 메서드를 정의합니다.


코틀린에서는 더 많은 기능을 활용할 수 있으며, 데이터 클래스, sealed 클래스, 델리게이션 등의 고급 기능도 활용할 수 있습니다. 클래스 정의에 관련된 더 많은 내용을 학습하려면 코틀린 공식 문서나 코틀린 관련 도서 등을 참고하는 것이 도움이 될 것입니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 생성자  (0) 2023.12.25
코틀린 클래스 내부 구조  (0) 2023.12.25
코틀린 try 문으로 예외 처리  (0) 2023.12.25
코틀린 예외 던지기  (0) 2023.12.25
코틀린 예외 처리  (0) 2023.12.25