Kotlin

[Kotlin] 코틀린 기초 2 - 코드를 간결하게 만드는 방법 feat.함수, 클래스, 객체, 객체지향

도우 2024. 3. 23. 17:42
728x90

코틀린 기초 2

 

함수

Function (함수) : 필요할 때마다 재사용하고 실행할 수 있는 독립적인 모듈. 입력 데이터를 받고 출력을 반환할 수 있다.
Parameter (파라미터) : 함수로 전달되는 데이터. 함수 내에서 특정 작업을 수행하는데 사용된다.
Argument (아규먼트) : 함수가 호출되었을때 실제로 전달/사용하는 일련의 값들. 즉 인수, 전달인자
Return Type (반환 타입) : 함수가 호출될 때 돌려주는 값의 타입이다.

 

‘fun’ 키워드를 사용해 함수를 선언할 수 있으며 괄호 안에서 파라미터와 반환값의 타입을 설정해야 한다.

함수와 파라미터의 이름은 Camel Case를 사용하여 작성하는 것이 권장되며 Boolean의 경우 is, has, are 같은 접두사로 시작하는 것이 좋다.

fun functionName(parameter1: Type, parameter2: Type): ReturnType {
// 실행 코드
    return value // 반환 타입과 반드시 일치해야 한다.
}

 

  • 파라미터와 반환 값이 없는 함수
    fun displayMessage() {
        println("Hello, World !")
    }
     
    displayMessage() // 함수 호출​

 

  • 파라미터가 있고 반환 값이 없는 함수
    fun greet(name: String) {
        println("Hello, $name!") // String 형식의 Parameter
    }
     
    // String 형식의 Argument를 전달한다
    greet("John") // 함수 호출​
     

 

  • 파라미터와 반환 값이 있는 함수
    fun addNumbers(a: Int, b: Int): Int {
        return a + b // Int 형식의 Parameter 
    }
     
    // 함수 호출
    val sum = addNumbers(5, 3) // Argument 5, 3
    println(sum) // Output: 8​

 

클래스와 객체

클래스는 객체를 생성하기 위한 템플릿과 같다.
객체는 클래스의 인스턴스으로, 클래스가 정의한 특정 속성(프로퍼티)과 동작(함수/메소드)를 가진다.

클래스의 기본 정의 방법은 다음과 같다

class 클래스명 {
// 클래스 본문
}

 

Constructor (생성자) : 객체가 생성될 때 객체의 프로퍼티(속성)를 초기화하는 데 사용되는 함수. 클래스 헤더에 선언된다.

Properties (프로퍼티) : 클래스에 정의된 변수로, 일부 데이터를 저장한다. 객체의 상태를 나타낸다.

Initializers (초기화 블록) : 객체가 인스턴스화 될 때 실행되는 코드 블록으로, 초기 상태를 설정하는 데 사용된다.

Objects/Instance (객체 / 인스턴스) : 클래스에서 생성된 개별 인스턴스로 프로퍼티에 특정 데이터를 저장한다.

 

  • 생성자와 프로퍼티
    // Kotlin 에서는 생성자를 바로 괄호 안에 작성할 수 있음
    class Person(name: String, age: Int) { // 생성자
        val name = name
        val age = age
    }​

 

  • 초기화 블록
    class Person(name: String, age: Int) {
       val name = name
       val age = age
     
       init { // 객체를 생성하는 순간 실행되는 코드
           println("Person named $name is created.")
       }
    }​
    Person 클래스의 객체가 생성되면, init 블록이 실행되어 메세지를 출력한다.

 

  • 기본 생성자 , 기본값
    class Person(val name: String = "John", val age: Int = 30)​
    생성자를 작성할때, 명시적으로 값을 설정해 주면 프로퍼티는 기본값을 가진다. 객체를 생성할 때 값이 따로 제공되지 않으면 설정된 기본값으로 사용이 된다.

 

  • 객체 인스턴스 생성
    val person1 = Person("Alice", 25) // Argument의 값으로 프로퍼티 재할당 => Alice, 25
    val person2 = Person() // 기본값 사용 => John, 30
    person1과 person2 모두 Person 클래스의 객체로서 특정 값을 가지고 있다.
    person2는 기본 생성자의 기본 값을 사용하여 생성된다.

데이터 클래스

데이터 클래스는 주로 데이터를 보유하기 위해 사용되는 간결한 방법으로 클래스의 유형이다.
data 키워드를 클래스 이름 앞에 붙여 정의한다.

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

 

  • 데이터 클래스의 요구사항
  1. 주 생성자는 최소한 하나의 매개변수를 가져야 한다.
  2. 주 생성자의 모든 매개변수는 val 또는 var로 표시되어야 한다.
  3. 데이터 클래스는 abstract, open, sealed 또는 inner가 될 수 없다

 

  • 데이터 클래스가 제공하는 기능
  1. equals() : 객체의 동등성 비교
  2. hashCode() : 객체의 해시 코드를 반환
  3. toString() : 객체를 문자열로 표현
  4. componentN() : 객체의 속성을 순서대로 반환하는 함수 제공
  5. copy() : 객체의 복사본을 생성하며, 선택적으로 일부 속성을 변경할 수 있다.

 

예시

val original = Person("John", 30)
val updated = original.copy(age = 31) // age 속성만 31로 변경된 새로운 person 객체임
728x90