본문 바로가기

앱, 어플리케이션 만드는 법 - [Kotlin] 클래스(Class) 개념

I-ri 발행일 : 2023-05-13 최종 업데이트 : 2023-05-14
728x90
반응형

#주의#

이 글은 강의 글이 아닙니다.

틀린 부분, 깔끔하지 못한 부분 있을 수 있습니다.

지적해 주시면 저도 공부가 되고, 앞으로 이 글을 보실 분들에게도 도움이 될 거라 생각합니다.


728x90
클래스란?

클래스는 객체 지향 프로그래밍의 기본 요소입니다. 클래스는 속성과 메소드를 가지며, 객체를 정의하는데 사용됩니다. Kotlin에서는 class 키워드를 사용하여 클래스를 정의합니다.

class Person(val name: String, var age: Int)

Kotlin에서 Class는 객체 지향 프로그래밍의 기본 단위입니다. Class는 객체를 생성하기 위한 템플릿으로, 객체의 속성과 동작을 정의합니다. Kotlin에서는 다음과 같은 기능을 제공합니다.

 

Class 선언

Kotlin에서 Class를 선언하는 방법은 Java와 유사합니다. 다음과 같이 class 키워드를 사용하여 Class 이름을 선언하고 중괄호 안에 속성과 동작을 정의할 수 있습니다.

class MyClass {
    // 속성과 동작 정의
}

 

 

생성자

Kotlin에서 Class는 생성자를 통해 객체를 생성합니다. 기본 생성자는 클래스 이름 뒤에 바로 따라오는 괄호 안에 매개변수를 정의하여 선언할 수 있습니다.

class MyClass(val name: String, var age: Int) {
    // 속성과 동작 정의
}

위와 같이 선언된 클래스는 name과 age라는 두 개의 속성을 가지며, 생성자를 통해 객체를 생성할 때 매개변수로 값을 전달해야 합니다.

반응형

 

상속

Kotlin에서 Class는 상속을 지원합니다. 다음과 같이 콜론(:) 뒤에 부모 클래스 이름을 적어 상속을 받을 수 있습니다.

open class ParentClass {
    // 속성과 동작 정의
}

class ChildClass : ParentClass() {
    // 속성과 동작 정의
}

 

 

인터페이스

Kotlin에서 Class는 인터페이스를 구현할 수 있습니다. 다음과 같이 콜론(:) 뒤에 인터페이스 이름을 적어 구현할 수 있습니다.

interface MyInterface {
    // 인터페이스 내용
}

class MyClass : MyInterface {
    // 속성과 동작 정의
}

 

 

접근 제한자

Kotlin에서 Class는 접근 제한자를 통해 속성과 동작의 가시성을 제어할 수 있습니다. 다음과 같은 접근 제한자를 제공합니다.

- public: 모든 곳에서 접근 가능(기본값)

- private: 같은 클래스 내에서만 접근 가능

- protected: 같은 클래스 내부 및 하위 클래스에서만 접근 가능

- internal: 같은 모듈 내에서만 접근 가능

class MyClass {
    public val publicProperty = "public"
    private val privateProperty = "private"
    protected val protectedProperty = "protected"
    internal val internalProperty = "internal"
}

 

Getter와 Setter

Kotlin에서 Class는 Getter와 Setter를 자동으로 생성합니다. 다음과 같이 속성을 선언할 때 get()과 set() 메서드를 오버라이드하여 Getter와 Setter를 사용자가 직접 구현할 수도 있습니다.

class MyClass {
    var myProperty: String = "Hello, Kotlin!"
        get() = field.toUpperCase()
        set(value) {
            field = "value: $value"
        }
}

위와 같이 선언된 클래스는 myProperty라는 속성을 가지며, Getter에서는 속성 값을 대문자로 변환하여 반환하고, Setter에서는 속성 값을 "value: "라는 문자열과 함께 저장합니다.

 

Companion Object

Kotlin에서 Class는 Companion Object를 사용하여 클래스 수준의 속성과 동작을 정의할 수 있습니다. Companion Object는 클래스 내부에 선언되며, 클래스 이름으로 접근할 수 있습니다.

class MyClass {
    companion object {
        val myProperty = "Hello, Kotlin!"
        fun myFunction() {
            // 함수 내용
        }
    }
}

위와 같이 선언된 클래스는 myProperty라는 속성과 myFunction이라는 함수를 가지며, Companion Object를 통해 MyClass.myProperty와 MyClass.myFunction()으로 접근할 수 있습니다.

 

Data Class

Kotlin에서 Class는 Data Class를 지원합니다. Data Class는 데이터를 저장하기 위한 클래스로, equals(), hashCode(), toString() 메서드를 자동으로 생성하여 객체 비교와 출력을 간편하게 해줍니다.

data class Person(val name: String, var age: Int)

위와 같이 선언된 클래스는 Person이라는 데이터 클래스로, name과 age라는 두 개의 속성을 가지며, equals(), hashCode(), toString() 메서드를 자동으로 생성합니다.

 

Sealed Class

Kotlin에서 Class는 Sealed Class를 지원합니다. Sealed Class는 상속을 제한하는 클래스로, sealed 키워드를 사용하여 선언합니다. Sealed Class는 sealed 클래스 내부에서만 상속이 가능합니다.

sealed class MySealedClass {
    class SubClass1 : MySealedClass()
    class SubClass2 : MySealedClass()
}

위와 같이 선언된 클래스는 MySealedClass라는 Sealed Class로, SubClass1과 SubClass2라는 두 개의 하위 클래스를 가지며, MySealedClass를 상속하는 다른 클래스는 선언할 수 없습니다. 이렇게 Kotlin에서는 다양한 기능을 제공하여 Class를 유연하게 활용할 수 있습니다.

728x90
반응형

댓글