코틀린 클래스 완벽 정리
코틀린에서 클래스는 객체지향 프로그래밍의 핵심 단위로,
속성과 동작(함수)을 하나로 묶어 표현한다.
class 키워드를 사용하며, 상속·캡슐화·생성자 등을 직관적으로 다룰 수 있다.
클래스 기본 구조
class 클래스이름 {
// 속성(Property)
// 메서드(Method)
}
예시
class Person {
var name: String = ""
var age: Int = 0fun introduce() {
println("안녕하세요, 제 이름은 $name이고 나이는 $age살입니다.")
}
}
사용 예시
val person = Person()
person.name = "재은"
person.age = 25
person.introduce()
기본 생성자 (Primary Constructor)
기본 생성자는 클래스 선언부에 정의할 수 있다.
class Person(val name: String, var age: Int)
사용 예시
val person = Person("재은", 25)
println(person.name)
println(person.age)
보조 생성자 (Secondary Constructor)
constructor 키워드를 사용해 추가 생성자를 정의할 수 있다.
class User {
var name: String
var age: Intconstructor(name: String, age: Int) {
this.name = name
this.age = age
}
}
여러 생성자 혼합 예시
class User(val name: String) {
var age: Int = 0constructor(name: String, age: Int) : this(name) {
this.age = age
}
}
init 블록
기본 생성자가 호출될 때 실행되는 초기화 블록이다.
class Person(val name: String, val age: Int) {
init {
println("초기화: 이름=$name, 나이=$age")
}
}
프로퍼티(Property)
클래스의 속성은 var(변경 가능) 또는 val(불변)로 선언한다.
class Car {
var model: String = "미정"
val wheels: Int = 4
}
게터와 세터 (Getter / Setter)
코틀린은 자동으로 게터와 세터를 생성하지만, 직접 정의할 수도 있다.
class User {
var name: String = "Unknown"
get() = field.uppercase()
set(value) {
field = value.trim()
}
}
상속 (Inheritance)
: 뒤에 상속받을 클래스를 지정한다.
코틀린의 클래스는 기본적으로 final이므로, 상속을 허용하려면 open 키워드를 붙여야 한다.
open class Animal {
open fun sound() {
println("동물 소리")
}
}class Dog : Animal() {
override fun sound() {
println("멍멍!")
}
}
추상 클래스 (Abstract Class)
추상 클래스는 인스턴스화할 수 없으며, 상속을 통해 기능을 구현한다.
abstract class Shape {
abstract fun draw()
}class Circle : Shape() {
override fun draw() {
println("원을 그립니다.")
}
}
인터페이스 (Interface)
인터페이스는 클래스가 반드시 구현해야 하는 규칙을 정의한다.
interface Drivable {
fun drive()
}class Car : Drivable {
override fun drive() {
println("차를 운전합니다.")
}
}
데이터 클래스 (Data Class)
데이터 저장 목적의 클래스로, 자동으로 toString(), equals(), copy() 등을 생성한다.
data class User(val name: String, val age: Int)
사용 예시
val user1 = User("재은", 25)
val user2 = user1.copy(age = 26)
println(user1)
println(user2)
싱글톤 (object 키워드)
object 키워드를 사용하면 단 하나의 인스턴스만 가지는 객체를 만들 수 있다.
object Database {
fun connect() {
println("데이터베이스 연결됨")
}
}
사용 예시
Database.connect()
내부 클래스 (Inner Class)와 중첩 클래스 (Nested Class)
- Nested Class: 외부 클래스와 독립적으로 존재
- Inner Class: 외부 클래스의 멤버에 접근 가능 (inner 키워드 필요)
class Outer {
private val name = "Outer"class Nested {
fun show() = "Nested 클래스"
}inner class Inner {
fun show() = "Inner 클래스: $name 접근 가능"
}
}
클래스 요약 비교표
- 0열 선택0열 다음에 열 추가
- 1열 선택1열 다음에 열 추가
- 2열 선택2열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
- 1행 선택1행 다음에 행 추가
- 2행 선택2행 다음에 행 추가
- 3행 선택3행 다음에 행 추가
- 4행 선택4행 다음에 행 추가
- 5행 선택5행 다음에 행 추가
- 6행 선택6행 다음에 행 추가
|
종류
|
키워드
|
특징
|
|
일반 클래스
|
class
|
기본적인 객체 구조
|
|
추상 클래스
|
abstract class
|
구현 강제, 인스턴스화 불가
|
|
데이터 클래스
|
data class
|
값 중심 클래스
|
|
싱글톤
|
object
|
하나의 인스턴스만 존재
|
|
인터페이스
|
interface
|
다중 구현 가능
|
|
내부 클래스
|
inner class
|
외부 클래스 접근 가능
|
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
'IT기기 팁' 카테고리의 다른 글
| 코틀린 객체와 동반 객체 (0) | 2025.12.06 |
|---|---|
| 코틀린 상속과 인터페이스 (0) | 2025.12.06 |
| 코틀린 반복문 (0) | 2025.12.06 |
| 코틀린 함수 (0) | 2025.12.06 |
| 코틀린 조건문 (0) | 2025.12.06 |