Android
[Android] 코틀린 3강으로 끝내기 (03)
배현진
2022. 1. 30. 00:03
▷ 강의명
코틀린 3강으로 끝내기(feat. 안드로이드 개발) _ inflean
▷ 진도 목표
1. 기본 문법- 2. 고급 문법
- 3. 안드로이드 앱 만들어보기
▶ 오늘의 학습
2. 고급 문법
2.2 Data class
data를 담는 그릇이 되는 class
- pojo class : 그 안에서 메소드가 작동하는 것이 아닌, 비어있는 틀 역할을 하는 class
-> java에서는 이런 클래스들을 위해 일일이 코드를 작성해줘야 했지만
kotlin에서는 data class를 사용함으로써 그런 귀찮음을 생략할 수 있다.
=> 코드 예시 _ data class
data class Ticket(val companyName : String, val name : String, var data : String, var searNumber : Int)
class Ticket(val companyName : String, val name : String, var data : String, var searNumber : Int)
fun main() {
val ticketA = Ticket(companyName : "koreanAir", name : "joyceHong", data : "2020-02-16", seatNumber : 14)
val ticketB = TicketNormal(companyName : "koreanAir", name : "joyceHong", data : "2020-02-16", seatNumber : 14)
println(ticketA) // Ticket(companyName = koreanAir, name = joyceHong, data = 2020-02-16, seatNumber = 14)
println(ticketB) // ...(주소)
}
* data class를 사용하면 toStirng(), hashCode(), equals(), copy() 등이 자동으로 사용할 수 있도록 생성된다.
* 연관된 데이터 클래스를 하나에 모아 만들 수 있어서 관리하기 편하다. (java로는 불가능하다)
2.3 Companion Object
java의 static을 대신해 사용하는 것으로, 정적인 메소드나 정적인 변수를 선언할 때 사용한다.
=> 코드 예시 _ companoin object
class Book private constructor(val id : Int, val name : String) {
companion object BookFactory : IdProvider {
override fun getId() : Int {
return 444
}
val myBook = "new book"
fun create() : Book = Book(id : 0, myBook)
}
}
interface IdProvider{
fun getId() : Int
}
fun main() {
val book = Book.Companion.create() // 이 코드를 써줘야 fun create()가 제대로 생성된다.
// Companion은 생략 가능하다.
val bookId = Book.BookFactory.getId()
println("${bood.id} ${book.name}") // 444 new book
}
2.4 Object
=> 코드 예시 _ Object
object CarFactory {
val cars = mutableListOf<Car>()
fun makeCar(horsePower : Int) : Car {
val car = Car(horsePower)
cars.add(car)
return car
}
}
data class Car(var horsePower : Int)
fun main() {
val car = CarFactory.makeCar(10)
val car2 = CarFactory.makeCar(200)
println(car) // 10
println(car2) // 200
println(CarFactory.cars.size.toString()) // 2
}