'kotlin data class init'에 해당되는 글 1건

728x90

코틀린에서는 접근자와 설정자를 따로 만들어줄 필요가 없다.
자바에서는 private 접근제한자로 은닉화된 멤버 변수에 getter/setter 메소드를 사용해서 접근한다.
코틀린은 property가 getter/setter를 대체한다.

코틀린에서 속성(property)란
최상위 변수(함수나 클래스 외부에 정의된 변수)나 클래스의 멤버 변수로 선언하면 속성으로 간주된다.
클래스의 멤버 변수는 모두 private 제한자로 지정된다.
따라서 해당 클래스의 내부의 getter와 setter를 통해서만 속성을 참조할 수 있다.

 

package com.myapp.funcargs

fun main(){
    val a = Person("홍길동", 30)
    println(a)
    //println(a.toString())

    val b = a.copy("이순신")
    println(b)

    val c = b.copy(age=40)
    println(c)

    val(name, age) = Person("강감찬",35)
    println("성명 : $name, 나이 : $age")



    val obj = Pair<String, Int>("김좌진", 50)
    println(obj)
}

// 데이터는 보유하지만 아무것도 안하는 클래스
data class Person(val name: String, val age: Int)
// 파라미터 없는 기본 생성자가 필요한 경우에는
// data class Person(val name: String = "", val age: Int = 0)
// 모든 프로퍼티에 기본 값을 설정해 주면 된다.
// 기본 생성자에서 선언된 속성을 통해, 컴파일러가 자동으로 toString(), hashCode(), equals() 등을 생성한다.
// 명시적으로 정의해준 경우에는 컴파일러가 자동으로 생성하지 않는다.

 

실행결과

 

 

import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
 
@Parcelize
data class Memo_AddEdit (
    var idx: String,
    var memo: String,
    var userID: String,
    var userNM: String,
): Parcelable
 
 
class MainActivity : AppCompatActivity() {
    private lateinit var mContext: Context
    private lateinit var mMemo_AddEdit: Memo_AddEdit
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mContext = this@MainActivity
 
        initView()
    }
 
    private fun initView() {
        // 값을 할당함으로써 초기화가 된다.
       mMemo_AddEdit = Memo_AddEdit("0","",userid,userNM)
 
    }
}

 

'안드로이드 > Kotlin 문법' 카테고리의 다른 글

코틀린 null 안전과 예외  (0) 2020.05.05
코틀린 object  (0) 2020.01.19
코틀린 고차함수와 람다 그리고 확장함수  (0) 2020.01.14
코틀린 접근 제한자  (0) 2020.01.14
코틀린 패키지  (0) 2020.01.13
블로그 이미지

Link2Me

,