코틀린 생성자 vs 자바 생성자코틀린은 자바에 비해 생성자가 여러 개 필요한 경우가 적다.자바에서 필요한 오버로드 생성자는 코틀린의 기본 생성자와 이름 붙인 인자 문법으로 해결이 가능하다.이름 붙인 인자함수나 생성자 호출시 파라미터의 이름을 명시적으로 지정하여 값을 전달하는 방식fun formatMessage(name: String, age: Int, location: String) { // ... }을 호출시에formatMessage(location = "Seoul", age = 30, name = "Alice") 혹은 formatMessage(name = "Alice", age = 30, location = "Seoul")인자가 무엇을 의미하는지 명확하게 전달이 가능하다.부 생성자가 필요한 경우프레임..
코틀린에서 인터페이스의 경우 추상 프로퍼티를 포함할 수 있다.인터페이스를 구현하는 클래스가 해당 프로퍼티에 대한 구현을 제공해야 한다.추상 프로퍼티 선언 예시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...
마지막에 2×1 타일을 놓는 경우마지막에 1×2 타일 두 개를 세로로 놓는 경우마지막에 2×2 타일을 놓는 경우를 모두 고려한다면, 점화식을 도출이 가능하다. dp[n] = dp[n-1] + 2 dp[n-2]package 알고리즘.백준.NX2타일링2 import java.io.BufferedReader import java.io.InputStreamReader /** *packageName : 알고리즘.백준.NX2타일링2 * fileName : Main * author : ipeac * date : 2024-03-04 * description : * =========================================================== * DATE AUTHOR NOTE * ------..
주 생성자(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..
[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..
코틀린 인터페이스 기본자바 8 의 인터페이스와 유사함인터페이스 내에 추상 메서드 + 구현이 있는 메서드( 자바 디폴트 메서드 ) 도 포함이 가능하다.하지만, 인터페이스에는 상태를 나타내는 필드를 포함할 수 없음.인터페이스 정의 및 구현interface Clickable { fun click() }click 이라는 추상 메서드를 가진 Clickable 인터페이스를 정의함.해당 인터페이스를 구현하는 모든 클래스는 click 메서드에 대한 구현을 제공해야함class Button : Clickable { override fun click() { println("I was clicked") } }Button 클래스는 Clickable 인터페이스를 구현하고 click 메서드를 오버라이드코틀린에서는 override ..