누룽지맛치킨
어미새의 개발일지
누룽지맛치킨
전체 방문자
오늘
어제
  • 분류 전체보기 (86)
    • 코틀린 (8)
    • 안드로이드 (5)
      • 디자인 (2)
      • 개발 (2)
      • 도구 (1)
    • 피그마 (1)
    • 대외활동 (0)
    • 프로젝트 (0)
    • 백준 (55)
      • JAVA (55)
    • 알고리즘 (3)
    • 클라우드 (5)
    • 스터디 (2)
      • 코테 (2)
    • 자료구조 (5)
    • 컴퓨터 기술 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준 자바
  • 백준 자바 2559번
  • Room Migration
  • 클라우드 컴퓨팅
  • 알고리즘 조합
  • 자바 Priority Queue
  • 코틀린
  • 안드로이드
  • 클라우드
  • 자료구조
  • 코틀린 runBlocking
  • Room version 올리기
  • 백준 자바 누적합
  • 백준 자바 벌집
  • 백준 자바 정렬
  • 백준 자바 2292번
  • 코틀린 인 액션
  • 백준 자바 다이나믹 프로그래밍
  • 안드로이드 디자인
  • 백준 자바 수열

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
누룽지맛치킨

어미새의 개발일지

코틀린

클래스와 프로퍼티

2023. 1. 25. 16:33
class Person(val name: String)
  • class 이름 : Person
  • 괄호 안의 파라미터는 프로퍼티
  • 클래스의 기본 가시성은 public

프로퍼티

  • 클래스
    • 데이터를 캡슐화
    • 캡슐화한 데이터를 다루는 코드를 한 주체 아래 가두는 것
  • 프로퍼티
    • 자바에서는 필드와 접근자를 묶어서 프로퍼티라고 부름
    • 코틀린 프로퍼티
      • 자바의 필드와 접근자 메소드를 완전히 대신
      • 프로퍼티 선언 시 → val이나 var을 사용
        • val : 읽기 전용 프로퍼티
        • var: 변경 가능
      class Person(
        val name: String,
        var isMarried: Boolean
      )
    • 코틀린은 위의 2개의 프로퍼티에 대해 (비공개) 필드와 (공개) 접근자 메소드를 만들어낸다.
    • 단 val의 경우 setter는 만들지 않음!
val person - Person("Bob", true)
println(person.name)
println(person.isMarried)
person.isMarried = false
  • 클래스 객체 생성 시 new 키워드는 사용하지 않고 생성자 호출
  • 프로퍼티 이름을 직접 사용해도 코틀린이 자동으로 게터를 호출해준다.
  • var 프로퍼티의 세터도 마찬가지 방식으로 동작

커스텀 접근자

class Rectangle(val height: Int, val width: Int){
    val isSquare: Boolean
        get() {
            return height == width
        }
}
fun main() {
    val rectangle = Rectangle(10, 10)
    println(rectangle.isSquare)
}
  • 대부분의 프로퍼티에는 그 프로퍼티의 값을 저장하기 위한 필드 존재
    • backing field라고 부름
  • 위의 예시와 같이 커스텀 접근자 생성 가능

코틀린 소스코드 구조

  • 코틀린 파일의 맨 앞에 package문을 넣을 수 있음
    • 그 파일 안에 있는 모든 선언(클래스, 함수 ,프로퍼티 등)이 해당 패키지에 들어간다.
    • 다른 파일에서 정의한 선언이라도 같은 패키지에 속한다면 직접 사용 가능
    • 다른 패키지의 선언은 import를 통해 선언을 불러와야함
    • 패키지 이름 뒤에 .*를 추가하면 패키지 안의 모든 선언을 import 가능’
  • 코틀린에서는 패키지 구조와 디렉터리 구조가 맞아 떨어질 필요가 없음

🎉 알게된 점

- 기존에 안드로이드 개발 시 ViewModel 구조에서 LiveData를 사용
    - LiveData의 구조가 이해되지 않았지만 항상 봐왔기 때문에 의문없이 사용
    - 이 구조가 커스텀 접근자라는 것을 알게 되었음

 

참조

KOTLIN IN ACTION

'코틀린' 카테고리의 다른 글

Iteration  (0) 2023.01.26
선택 표현과 처리  (0) 2023.01.25
함수와 변수  (0) 2023.01.25
What is Kotlin  (0) 2023.01.07
🔥코틀린 시작  (0) 2023.01.06
    '코틀린' 카테고리의 다른 글
    • Iteration
    • 선택 표현과 처리
    • 함수와 변수
    • What is Kotlin
    누룽지맛치킨
    누룽지맛치킨

    티스토리툴바