Kotlin 기초문법(5)

박재원·2023년 12월 4일
0

TIL

목록 보기
7/50
post-thumbnail
post-custom-banner

코딩을 하면서 함수라는 단어를 많이 접하게 된다. java와 kotlin을 공부하면서 부터 함수를 메서드라고 부른다. 메서드 선언을 하기 전 메서드란 무엇인지 알아보자

메서드

  • 메서드는 어떠한 기능을 수행하는 코드 블록이다.
  • 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 프로그램 코드의 집합 이라고 할 수 있다.

메서드 기본형

fun 함수명(변수명 : 타입, 변수명 : 타입, ... )  : 반환 자료형 {

    함수내용
    함수내용
    ...
    return 반환값
}

e.g.

fun PlusNumber(firstNumber : Int = 20, secondNumber : Int = 30) : Int {
    val result = firstNumber + secondNumber
    return result
}

fun main() {
    val sum = PlusNumber(firstNumber = 10)
    println(sum)  //40
}

위 코드는 firstNumber 값만 넘겨주었지만, secondNumber는 30이라는 기본값이 있기 때문에 40이 출력된다.

  • 위 코드를 더 간결하게 줄일 수 있다.
fun PlusNumber(firstNumber : Int = 20, secondNumber : Int = 30) = firstNumber + secondNumber

fun main() {
    val sum = PlusNumber(firstNumber = 10)
    println(sum)  //40
}

클래스

  • class 키워드를 통해 클래스를 선언할 수 있습니다.

  • 클래스 이름을 쓰며 일반적으로 파스칼케이스(PascalCase)를 이름 규칙으로 가져갑니다.

  • 클래스 이름 옆에 생성자 키워드 constructor을 넣어 생성자를 선언할 수 있습니다.

  • 기본적인 접근제어자는 public 이며 public으로 사용할 때는 constructor을 생략하고 사용할 수 있습니다.

  • val 또는 var 키워드를 통해 내부 변수를 선언할 수 있습니다.

  • 객체가 생성될때 초기화 블럭이 실행됩니다.

  • 실행 순서는 위에서 아래로 차례대로 실행되며 init 블럭에서는 해당 블럭보다 위에 선언되어있는 멤버변수, 그리고 생성자 변수만을 사용할 수 있습니다.

  • 클래스의 상태 업데이트 등을 캡슐화하여 사용하기 위해 클래스 내부에 함수를 선언할 수 있습니다.

클래스 기본구조

class 클래스이름 {
	  정보1
		정보2

		행위1
		행위2
}

데이터 클래스

  • 정보(프로퍼티)만 가지고 있는 클래스
  • 기본 생성자에 1개 이상의 매개변수가 변수나 상수로 존재해야한다.
data class 클래스이름 {
			정보1
			정보2
}

실드 클래스

  • 상속받을 수 있는 자식클래스들을 미리 정의 할 수 있다.
  • 무분별한 상속을 방지한다.
sealed class 부모클래스 {
	class 자식클래스1 : 부모클래스생성자
	class 자식클래스2 : 부모클래스생성자
}

오브젝트 클래스

  • java의 static 대신 사용하는 키워드
  • 프로그램을 실행하는 동시에 인스턴스화 한다.

열거 클래스

  • 여러 곳에 동일한 상수를 정의할 때 등 코드가 증가하게 될 때 사용한다.
  • Comparable 인터페이스를 구현하는 추상 클래스
enum class 클래스1 {
    C, JAVA, KOTLIN
}

enum class 클래스2(val code: Int) {
    C(10),
    JAVA(20),
    KOTLIN(30)
}

fun main() {
    println(클래스1.C.toString()) // 출력: C
    println(클래스2.KOTLIN.code) // 출력: 30
    println(클래스2.KOTLIN.name) // 출력: KOTLIN
}
post-custom-banner

0개의 댓글