728x90
반응형
이전 글에서는 조건문과 반복문을 배웠습니다. 이번에는 코틀린의 객체지향 프로그래밍 개념을 다뤄보겠습니다. 클래스, 생성자, 속성, 메서드를 이해하고 실제 객체를 다루는 방법을 배워봅시다.
1. 클래스(Class)
클래스는 객체를 정의하는 청사진입니다. 코틀린에서는 class 키워드를 사용하여 클래스를 정의합니다.
기본 클래스 정의
class Person {
var name: String = ""
var age: Int = 0
fun introduce() {
println("Hi, my name is $name and I am $age years old.")
}
}
객체 생성
Person 클래스를 사용하여 객체를 생성하고 속성과 메서드를 사용할 수 있습니다.
val person = Person()
person.name = "John"
person.age = 25
person.introduce() // "Hi, my name is John and I am 25 years old."
2. 생성자(Constructor)
클래스를 초기화할 때 값을 설정하려면 생성자를 사용할 수 있습니다. 코틀린에서는 주 생성자와 부 생성자를 제공합니다.
(1) 주 생성자
클래스 헤더에 정의되며, 가장 기본적인 생성자입니다.
class Person(val name: String, var age: Int) {
fun introduce() {
println("Hi, my name is $name and I am $age years old.")
}
}
val person = Person("Alice", 30)
person.introduce() // "Hi, my name is Alice and I am 30 years old."
(2) 부 생성자
constructor 키워드를 사용하여 정의하며, 주 생성자와 함께 사용할 수 있습니다.
class Person {
var name: String
var age: Int
constructor(name: String, age: Int) {
this.name = name
this.age = age
}
fun introduce() {
println("Hi, my name is $name and I am $age years old.")
}
}
val person = Person("Bob", 40)
person.introduce() // "Hi, my name is Bob and I am 40 years old."
3. 속성과 메서드
클래스는 속성(변수)과 메서드(함수)를 포함할 수 있습니다.
(1) 속성(Property)
- 코틀린은 속성을 간단히 선언하고 초기화할 수 있습니다.
- Getter와 Setter는 자동으로 생성되지만, 필요하면 커스터마이징 가능합니다.
class Person {
var name: String = ""
get() = field.uppercase() // Getter 커스터마이징
set(value) {
field = value.trim() // Setter 커스터마이징
}
}
val person = Person()
person.name = " John "
println(person.name) // "JOHN"
(2) 메서드(Method)
클래스 안에서 정의된 함수로, 객체의 동작을 정의합니다.
class Calculator {
fun add(a: Int, b: Int): Int {
return a + b
}
fun subtract(a: Int, b: Int) = a - b // 간결한 표현
}
val calc = Calculator()
println(calc.add(3, 5)) // 8
println(calc.subtract(10, 4)) // 6
4. 데이터 클래스(Data Class)
데이터 클래스는 데이터 저장용 클래스를 간편하게 작성할 수 있도록 제공합니다. 자동으로 toString, equals, hashCode, copy 메서드를 생성해 줍니다.
data class User(val id: Int, val name: String)
val user1 = User(1, "Alice")
println(user1) // "User(id=1, name=Alice)"
val user2 = user1.copy(name = "Bob")
println(user2) // "User(id=1, name=Bob)"
5. 상속(Inheritance)
코틀린의 클래스는 기본적으로 final입니다. 상속을 허용하려면 open 키워드를 사용해야 합니다.
기본 상속
open class Animal {
open fun sound() {
println("Some generic sound")
}
}
class Dog : Animal() {
override fun sound() {
println("Woof!")
}
}
val dog = Dog()
dog.sound() // "Woof!"
728x90
반응형
'프로그래밍 언어 > Kotlin' 카테고리의 다른 글
[Kotlin] 6. 코틀린 확장 함수와 표준 라이브러리 활용 (0) | 2024.11.23 |
---|---|
[Kotlin] 5. 컬렉션과 함수형 프로그래밍 (1) | 2024.11.22 |
[Kotlin] 3. 조건문과 반복문 (0) | 2024.11.19 |
[Kotlin] 2. 변수, 자료형, 함수 (1) | 2024.11.18 |
[Kotlin] 1. 코틀린이란 무엇인가? (2) | 2024.11.17 |