IT기기 팁

코틀린 클래스

lt8492 2025. 12. 6. 14:47
반응형

 

코틀린 클래스 완벽 정리

코틀린에서 클래스는 객체지향 프로그래밍의 핵심 단위로,

속성과 동작(함수)을 하나로 묶어 표현한다.

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