Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발여행일지~

코틀린 4일차~! (메소드와 클래스, 생성자) 본문

코틀린 공부정리

코틀린 4일차~! (메소드와 클래스, 생성자)

야생돌고래 2023. 7. 20. 21:14
메소드 설계
  • 특정한 로직을 가지는 소스코드에 별명(이름)을 붙일 수 있다.
  • 이름이 붙은 로직은 앞으로 메소드라고 부를 수 있다.

Kotlin의 메소드 구조

fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {
		소스코드 로직
}
클래스 설계
  • Object Oriented Programming (OOP)
  • 코틀린은 모든것이 클래스형태이므로 객체화할 수 있다.
  • 프로그램에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만든다.
  • 객체들간의 적절한 결합을 통해 유지보수를 쉽게 할 수 있다. 

5대 키워드

  • 클래스
  • 추상화
  • 캡슐화
  • 상속
  • 다형성
특별한 클래스

데이터 클래스 (data class)

  • 정보 프로퍼티만 갖고있는 클래스 필요 시 (데이터 관련) 사용
  • data class 클래스이름 (val name : String, val age : Int,)

실드 클래스 (sealed class)

  • 클래스 상속과 관련된 개념이다.
  • 상속받을 수 있는 자식클래스를 미리 정의할 수 있다.
  • 무분별한 상속을 방지할 수 있다.
  • 컴파일 시점에 생성할 수 있는 자식을 알 수 있기 때문에 효율적으로 다형성 구현한다.
  • sealed class 부모클래스 {class 자식클래스1 : 부모클래스생성자 class 자식클래스2: 부모클래스 생성자}

오브젝트 클래스 (object class)

  • 프로그램을 실행하는 동시에 인스턴스화 한다
생성자
  • 기본 생성자와 명시적 생성자가 존재한다.
  • 기본 생성자는 이전까지 클래스를 만들던 행위와 차이가 없다.
  • 명시적 생성자는 주 생성자와 부 생성자로 구분할 수 있다.

Init(주 생성자)의 사용 예시

fun main() {

}

// 클래스 선언부에 생성자를 명시함
class Character(_name:String, _hairColor:String, _height:Double) {
    var name:String = ""
    var hairColor:String = ""
    var height:Double = 0.0

		// 매개변수를 직접 넘기지않음
    init {
        println("매개변수없는 생성자 실행 완료!")
    }

    fun fireBall() {
        println("파이어볼!")
    }
    fun compositing(device1:String, device2:String): String {
        var device3 = device1 + device2
        println("새로운 무기인 ${device3}입니다")
        return device3
    }
}

Constructor (부 생성자)의 사용 예시

fun main() {

  }

  class Character {
      var name:String = ""
      var hairColor:String = ""
      var height:Double = 0.0

      // 명시적 생성자 (Constructor)
      // _name, _hairColor, _height와 같이 생성자에 변수를 넘기는 경우에 사용함
      constructor(_name:String, _hairColor:String, _height:Double) {
          println("${_name}을 생성자로 넘겼어요")
          println("${_hairColor}를 생성자로 넘겼어요")
          println("${_height}를 생성자로 넘겼어요")
      }

      fun fireBall() {
          println("파이어볼!")
      }
      fun compositing(device1:String, device2:String): String {
          var device3 = device1 + device2
          println("새로운 무기인 ${device3}입니다")
          return device3
      }
  }
생성자를 어디에 사용하는가!
  • 한 가지의 형태로 클래스를 실체화할때는 주 생성자를 활용할 수 있다.
  • 여러 형태로 클래스를 실체화할때는 보조 생성자를 활용할 수 있다.
  • <이름, 머리색상, 키> 또는 <이름, 머리색상, 키, 나이, 성별> 처럼 여러개의 생성자를 통해 최초로 코드를 실행할 때는 부 생성자를 이용한다.
  • 항상 <이름, 머리색상, 키>만 생성자에서 최초로 코드를 실행할 때는 주 생성자를 사용한다.

후기

메소드, 클래스, 생성자 등 구현을 할때 이게 뭔가~~ 라는 생각이 들어 프로그램을 구현할때 힘들었다.

하루종일 구글링하고 찾아본결과 조금은 이해하고 알꺼같다.

'코틀린 공부정리' 카테고리의 다른 글

지연초기화  (0) 2023.07.24
예외 처리 (try-catch, throw의 구조)  (0) 2023.07.24
코틀린 3일차 공부! (OCP, 객체의 결합도&응집도 정리)  (0) 2023.07.19
코틀린 2일차!  (0) 2023.07.18
코틀린 1일차!  (0) 2023.07.17