모던 안드로이드 - 코틀린과 JetPack 활용 #4 - 클래스

in #kr3 years ago

강의 URL

https://www.inflearn.com/course/%EB%AA%A8%EB%8D%98-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%A0%9C%ED%8A%B8%ED%8C%A9/lecture/49118?tab=curriculum&volume=1.00&speed=1


공개 범위 클래스

  • Java와 달리 public 키워드 사용할 필요 없음
  • 공개 범위 명시 안하면, 자동으로 public

클래스에 주 생성자 정의

class 클래스_이름 (1개 이상 파라메터) {
   // ...
}
  • 파라메터는 클래스의 멤버에 속함
  • 파라메터에 공개 범위 설정 가능 (private, protected, public 등)
  • 파라메터의 기본값 설정 가능 (부분 설정은 오른쪽 파라메터만 가능)
예 - Person 클래스

name, score를 갖는 Person 클래스

class Person (val name: String, var score: Int) {
    override fun toString(): String {
        return "{name: '$name', score: $score}"
    }
}

Person 클래스: name, score를 갖되 score 명시 않으면 기본값 0

class Person (val name: String, var score: Int = 0) {
    override fun toString(): String {
        return "{name: '$name', score: $score}"
    }
}

Person 클래스: name, score를 갖되 name, score 명시 않으면 기본값 각각 "", 0

class Person (val name: String = "", var score: Int = 0) {
    override fun toString(): String {
        return "{name: '$name', score: $score}"
    }
}

Person 클래스: 오류! 기본값 갖는 파라메터는 오른쪽만 가능

class Person (val name: String = "", var score: Int) {
    override fun toString(): String {
        return "{name: '$name', score: $score}"
    }
}

클래스 타입의 객체 정의

  • Java와 달리 new 키워드 사용하지 않음
val person = Person("Park", 100)

객체의 필드 접근

  • 다음의 형식으로 접근 가능
객체_이름.필드_이름
예 - Person 객체의 name 필드 접근
val person = Person("Park", 100)
val name = person.name
println("Name: $name")

클래스에 초기화 코드 작성

  • 클래스 안에 빈 init 문 작성하고,
  • init 문 안에 초기화 코드 작성한다.
  • Person 클래스에 grade 필드 추가. 주 파라메터 대신 클래스 바디 안에 정의.
  • grade 필드 초기화는 init 문 안에서 실행
class Person (val name: String, var score: Int) {

    private var grade: Int    // 등급: 1(VIP), 2(일반), 3(요주의인물)

    init {
        grade = 2
    }

    override fun toString(): String {
        return "{name: '$name', score: $score, grade: $grade}"
    }
}

fun main() {
    val person = Person("Park", 100)
    println("New person: ${person.toString()}")
}

모던 안드로이드 - 코틀린과 JetPack 활용 (지난 내용)