현실을 넘어
close
프로필 배경
프로필 로고

현실을 넘어

  • 분류 전체보기
    • 자바
      • 일반
      • 알고리즘
      • 객사오
      • 스프링입문객체지향
      • 리팩토링
      • 스프링부트3
      • JPA
      • QueryDsl
      • Spring Security
    • 코틀린
      • 코틀린인액션
      • 알고리즘
    • 일 관련 삽질
    • JIRA
    • 도메인주도개발
    • DB
      • Mysql
    • MQ
      • Apache Kafka
    • Docker-Kubernetes
    • GITHUB
    • REST API
    • 리눅스
  • 홈
  • 태그
  • 방명록

[코틀린 인 액션] 4.2.2 __부 생성자: 상위 클래스를 다른 방식으로 초기화__

코틀린 생성자 vs 자바 생성자코틀린은 자바에 비해 생성자가 여러 개 필요한 경우가 적다.자바에서 필요한 오버로드 생성자는 코틀린의 기본 생성자와 이름 붙인 인자 문법으로 해결이 가능하다.이름 붙인 인자함수나 생성자 호출시 파라미터의 이름을 명시적으로 지정하여 값을 전달하는 방식fun formatMessage(name: String, age: Int, location: String) { // ... }을 호출시에formatMessage(location = "Seoul", age = 30, name = "Alice") 혹은 formatMessage(name = "Alice", age = 30, location = "Seoul")인자가 무엇을 의미하는지 명확하게 전달이 가능하다.부 생성자가 필요한 경우프레임..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2024. 3. 4.
  • textsms

[코틀린 인 액션] 4.2.3 인터페이스에 선언된 프로퍼티 구현

코틀린에서 인터페이스의 경우 추상 프로퍼티를 포함할 수 있다.인터페이스를 구현하는 클래스가 해당 프로퍼티에 대한 구현을 제공해야 한다.추상 프로퍼티 선언 예시interface User { val nickname: String } //주 생성자에서 프로퍼티를 직접 선언한다. class PrivateUser(override val nickname: String) : User { /*User 의 추상 프로퍼티를 override 키워드로 구현*/ } // 커스텀 게터를 사용한다. class SubscribingUser(val email: String) : User { /*이메일 주소에서 별명을 계산하여 반환하는 커스텀 게터 사용*/ override val nickname: String get() = email...

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2024. 3. 4.
  • textsms

[KOTLIN] 클래스 초기화 : 주 생성자와 초기화 블럭

주 생성자(Primary Constructor)클래스 이름 뒤에 오는 괄호로 둘러싸인 코드를 주 생성자라고 함생성자 인자 지정인자에 의해 초기화되는 프로퍼티를 정의할 때 사용주 생성자의 명시적 선언class User(_nickname: String) { val nickname: String init { nickname = _nickname } }init 키워드로 초기화 블럭을 시작한다.객체가 생성될 때 실행된다.주 생성자의 간결한 선언class User(val nickname: String)val 키워드를 생성자 파라미터 앞에 추가함으로 프로퍼티 정의하고 초기화 가능프로퍼티 정의와 초기화를 한 줄로 간략하게 표현한다.생성자 인자 디폴트값class User(val nickname: String, val i..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2024. 2. 21.
  • textsms

[KOTLIN] 봉인된 클래스(sealed class) : 클래스 계층의 확장 제한

[KOTLIN] 봉인된 클래스(sealed class) : 클래스 계층의 확장 제한기본sealed 클래스클래스 계층을 정의할 때 계층 확장을 제한하는 방법 제공함.하위 클래스는 모든 가능한 하위 타입을 제한적으로 나열할 수 있게 함.when 식에서 else 분기 없이도 완전성을 보장한다.예제 : 식(Expression) 계층interface Expr class Num(val value: Int) : Expr class Sum(val left: Expr, val right: Expr) : Expr fun eval(e: Expr): Int = when (e) { is Num -> e.value is Sum -> eval(e.right) + eval(e.left) else -> throw IllegalArgu..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2024. 2. 19.
  • textsms

[KOTLIN] 클래스 계층 정의

코틀린 인터페이스 기본자바 8 의 인터페이스와 유사함인터페이스 내에 추상 메서드 + 구현이 있는 메서드( 자바 디폴트 메서드 ) 도 포함이 가능하다.하지만, 인터페이스에는 상태를 나타내는 필드를 포함할 수 없음.인터페이스 정의 및 구현interface Clickable { fun click() }click 이라는 추상 메서드를 가진 Clickable 인터페이스를 정의함.해당 인터페이스를 구현하는 모든 클래스는 click 메서드에 대한 구현을 제공해야함class Button : Clickable { override fun click() { println("I was clicked") } }Button 클래스는 Clickable 인터페이스를 구현하고 click 메서드를 오버라이드코틀린에서는 override ..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2024. 2. 9.
  • textsms

[KOTLIN] 로컬 함수와 확장

중복 제거의 중요성DRY(Don't Repeat Yourself) 원칙을 따르는 것이 중요코틀린의 로컬 함수함수 내부에 로컬 함수를 중첩시켜 코드를 깔끔하게 조직로컬 함수를 사용해 코드 중복 줄이는 법class User(val id: Int, val name: String, val address: String) fun saveUser(user: User) { fun validate(value: String, fieldName: String) { if (value.isEmpty()) { throw IllegalArgumentException("Can't save user ${user.id}: empty $fieldName") } } validate(user.name, "Name") validate(user..

  • format_list_bulleted 코틀린/코틀린인액션
  • · 2024. 2. 9.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 7
  • navigate_next
공지사항
  • ㅇ
전체 카테고리
  • 분류 전체보기
    • 자바
      • 일반
      • 알고리즘
      • 객사오
      • 스프링입문객체지향
      • 리팩토링
      • 스프링부트3
      • JPA
      • QueryDsl
      • Spring Security
    • 코틀린
      • 코틀린인액션
      • 알고리즘
    • 일 관련 삽질
    • JIRA
    • 도메인주도개발
    • DB
      • Mysql
    • MQ
      • Apache Kafka
    • Docker-Kubernetes
    • GITHUB
    • REST API
    • 리눅스
최근 글
인기 글
최근 댓글
태그
  • #자바
  • #객체지향
  • #리팩토링
  • #ddd
  • #알고리즘
  • #객사오
  • #Kotlin
  • #도메인주도개발
  • #JPA
  • #QueryDSL
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바