본문 바로가기

안드로이드 프로그래밍17

[kotlin] Data class, Sealed class fun main(){ ///////// data class 예시 ///////// val person=Person("수지",24) val dog=Dog("해피",23) println(person.toString()) // 그냥 참조 주소값이 나옴 // 출력: org.techtown.part0.kotlin.part2.Person@2acf57e3 println(dog.toString()) // 데이터 클래스의 경우 안의 데이터를 볼 수 있는 tostring 함수가 구현됨 // 출력 : Dog(name=해피, age=23) println(dog.copy(age=3)) // 원.. 2023. 8. 14.
[kotlin] 초기화 지연(lazy initialization) 초기화 지연을 사용하는 이유 ?  보통 클래스에서 변수를 초기화하면, 클래스 생성 시 해당 변수도 함께 생성되며 초기화된다. 그렇게 되면 클래스 객체를 생성할 때마다 해당 변수도 함께 초기화되기 때문에 바로 사용할 수 있다는 장점이 있다.하지만 해당 변수를 바로 사용하지 않거나 꼭 사용하는 경우가 아니라면 클래스를 생성할 때마다 변수를 초기화하기 때문에 메모리나 소프트웨어의 실행 시간 측면에서 손해를 많이 보게 될 것이다.정리하면 지연 초기화는 해당 변수가 필요한 순간까지 초기화를 최대한 미루어서 메모리나 실행 시간에서 이득을 보기 위해 사용한다. lateinit var text:String // 타입을 반드시 지정해줘야함val test : Int by lazy{ // lateinit var와 달.. 2023. 8. 14.
[kotlin] 코틀린 스코프 함수 let, with, run, apply, also 차이 비교 정리 1. let     1. 수신객체를 받기 위해서 it 을 사용(생략 불가능),         명시적으로 local variales 선언 가능    2. 마지막 줄이 return 값 ( 람다식과 동일한 것을 볼 수 있음)    3.  let을 많이 쓰는경우 ?  non-null 체크  사용 예시class User( val name: String, var age: Int, val gender: Boolean, var hasGlasses: Boolean)val user: User? = User("나", 10, true,true)val age = user?.let { it.age //it으로 받음 , 마지막 줄 it.age가 리턴됨}val age1 = user?.let { use.. 2023. 8. 10.
[kotlin] 접근 제한자(Visibility Modifiers) 접근 제한자 접근 제한자는 해당 패키지나 클래스에 외부에서 접근하려 할 때, 접근을 제어할 수 있는 개념입니다.접근제한자는 패키지와 클래스에 접근할 때의 두 경우로 나뉘게 됩니다.- public, internal, private, protected - 변수, 함수 , 클래스 선언 시 맨 앞에 적어준다 - ex) private val number : Int =10 범위(Scope) - 변수(변수 자체가 Scope), 함수 ,클래스  - 규칙  - 같은 스코프 안에서는 공유 가능   - 하위 스코프에서는 상위 스코프 멤버를 사용 및 재정의(할당) 할 수 있다.      - 상위 스코프에서는 하위 스코프에 있는 맴버를 사용 및 재정의 할 수 없다.   프로젝트  -> 모듈들로 구성 모듈  -> 라이브러리로 구.. 2023. 1. 27.