14_Kotlin_Class

박성현·2023년 5월 16일
0

클래스

  • 객체(Object)를 만드는 문법적인 요소
  • 설명서 (해당 클래스를 통해서 객체를 만드는 방법)
  • 객체의 기능에 대한 설명

생성자

  • 주 생성자 (Primary Constructor)

    • 클래스 이름 옆에 괄호로 둘러싸인 코드

    • 클래스를 통해서 객체를 만드는데 필요한 재료들을 적어 준다

      • 재료이름(변수명) : 재료타입(변수타입)
    • 반드시 한개만 존재할 수 있다

    • constructor 키워드를 생략할 수 있다

      // 주 생성자 -> 풀버젼 (생략이 없는 버젼)
      class User1 constructor(name : String) { // 클래스 네이밍은 대문자로 시작한다
        val userName : String // 클래스 속성 (프로퍼티, property)은 init블럭에서 초기화 한다
      
        init { // 클래스가 생성될때 (클래스를 통해서 객체를 만들때) 호출된다
            println(name)
            userName = name
        }
      }
      // 주 생성자 -> constructor를 생략하는 방법
      class User2 (name : String) {
        val userName : String = name
      }
  • 부 생성자 (Secondary Constructor)

    • constructor 키워드를 생략할 수 없다

    • 주 생성자에는 객체를 만들기 위한 필수 조건이 있다면, 부 생성자에는 객체를 만들기 위한 옵션 조건이 있다

    • 부 생성자에는 주 생성자에서 필요한 조건을 포함하고 있어야 한다 (파라미터를 포함하고 있어야한다)

    • 부 생성자는 주 생성자에게 생성을 위임해야한다

      class User3 constructor (name : String) {
        var age : Int = 0
        val name : String
        val nickName : String = ""
      
        init {
            println("init")
            this.name = name
            this.age = 100
        }
      
        // 부 생성자는 클래스명 우측에 올수 없다 -> 클래스의 본문에 있어야한다
        constructor(name : String, age : Int) : this(name) { // this = User6
            println("second")
            this.age = age
        }
        // 부생성자는 여러개 존재할 수 있다
        constructor(name : String, age : Int, nickName : String) : this(name) {
            this.age = age
            this.nickName = nickName
        }
      }
  • init 블록 (initial, 초기) (블록 => {})

    • 초기화 블록
    • 초기화 시에 필요한 작업을 하는 곳 (클래스 생성시 무조건 초기화 시켜줘야한다)

클래스의 기능

  • 클래스 - 붕어빵 틀

    • 붕어빵 틀을 통해서 찍어내는 과정 -> 인스턴스화 한다
    • 그 결과물 -> 객체(오브젝트)
      • val book = Book("책제목")
  • 붕어빵 틀을 사용하는 방법 -> 생성자 사용법

  • 결과물이 가지고 있는 것 -> 속성(프로퍼티) (ex. 책 제목)

  • 클래스 기능 추가 -> 클래스안에 함수(기능)을 추가한다

class FootballPlayer constructor(uniform : String, ball : String) {

    val uniform : String
    val ball : String

    init {
        this.uniform = uniform
        this.ball = ball
    }

    fun kick() {
        // println("공을 찼다")
        // 반복, 예외처리, 흐름제어
        if (ball == "축구공") println("축구공을 찼다")
        else println("공이 없다")
    }

    fun pass() {
        println("패스를 했다")
    }

}

val footballPlayer = FootballPlayer("빨간색 유니폼", "축구공")
//println(footballPlayer.uniform)
footballPlayer.kick()

val footballPlayer2 = FootballPlayer("파란색 유니폼", "축구공")
footballPlayer2.pass()
profile
성장하고 싶은 안드로이드 개발자입니다.

0개의 댓글

관련 채용 정보