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