모던 안드로이드 - 코틀린과 JetPack 활용 #4 - 클래스
강의 URL
공개 범위 클래스
- 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 활용 (지난 내용)
Sort: Trending
[-]
successgr.with (74) 3 years ago