목록코틀린 (4)
성장기록지
이전에 Data Class를 학습하며 ComponentN() 함수를 다뤘다.간단하게 알아봤던 구조분해를 조금 더 자세히 알아보고자 한다.디스트럭쳐링(Destructuring)객체가 가지고 있는 여러 값을 분해해서 여러 변수에 한꺼번에 초기화할 수 있다.data class Person(val name: String, val age: Int)fun main() { val person = Person("Hoon", 28) // 구조 분해 val (name, age) = person println("Name: $name, Age: $age")}위의 Data Class의 예시처럼 여러 변수를 괄호를 묶게 되면 내부에서는 각 변수를 초기화하기 위해 componentN이라는 함수를 호출하게 된다..
Sealed class의 기능적 특징sealed 클래스는 자기 자신이 추상 클래스이고, 자신을 상속받는 여러 서브 클래스들을 가질 수 있다.enum 클래스와 달리 상속을 지원하기 때문에, 상속을 활용한 풍부한 동작을 구현할 수 있다.제일 중요한 것은, 자신을 상속받는 서브 클래스의 종류를 제한할 수 있다.어떻게 자신을 상속받는 서브클래스를 제한할 수 있을까? 우선, sealed 클래스의 서브 클래스들은 반드시 같은 패키지 내에 선언되어야 한다.(sealed 클래스의 서브 클래스를 상속한 클래스들은 같은 패키지 내에 없어도 된다.)또한 sealed 클래스는 기본적으로 abstract 클래스이고,sealed 클래스는 private 생성자만 갖게 되기 때문이다.Sealed class의 등장 배경그렇다면 왜 s..
Data Class란?오직 데이터를 실어담을 수 있는 객체를 만들고 싶을 때 사용한다.일반 클래스와 다르게, 다양한 메소드를 자동으로 생성해주는 클래스이다.구성되는 메소드들은 아래와 같다.toString()hashCode()copy()equals()toString()componentsN()또한 아래와 같은 특징들을 가지고 있다. 기본 생성자에 1개 이상의 파라미터가 있어야 함기본 생성자의 파라미터가 val 또는 var 로 선언해야 함다른 클래스를 상속받을 수 없음 ( sealed 클래스는 상속받을 수 있으며, 인터페이스는 구현할 수 있다.)abstract, open, sealed, inner 등 키워드를 붙일 수 없음자동으로 생성한 메소드를 오버라이딩할 경우, 오버라이드 된 메소드 사용아래에선 하나씩 어..
추상 클래스와 인터페이스의 차이를 설명하세요코틀린이랑 그렇게 친하지 않은 사람은 별 차이가 없다고 생각을 할 수 있다.명확한 차이를 확인하도록 기능적 차이와 개념적 차이를 하나씩 파헤쳐 보도록 하겠다독자는 추상 클래스와 인터페이스가 뭔지는 안다는 가정하에 작성해보겠다.기능적 차이1. 인터페이스는 생성자를 만들 수 없다.인터페이스는 추상클래스와 다르게 생성자를 만들 수 없다.왜 이렇게 구성하였는지의 의도는 개념적 차이에서 보충하겠다.2. 인터페이스는 프로퍼티의 상태 저장이 불가능하다.간단한 예시와 함께 보여드리겠다.추상클래스는 다음과 같이 값을 지정해 둘 수 있다.하지만 인터페이스는 다음과 같이 상태 저장이 불가능하다.왜 인터페이스는 상태 저장이 안되게 만들었을까? 이것도 중요한 내용이니이후에 다룰 개념적..