240308 TIL

DoDoBest

·

2024. 3. 8. 23:25

오늘 학습한 내용

  1. Kotlin In Action 9.3 변성: 제네릭과 하위 타입
  2. Udemy 강의
    - partition : 조건에 따라 collection을 두 개의 리스트로 분리하는 연산
    - group: 데이터를 구분할 수 있는 값을 key로 갖는 map 타입으로 변환해주는 연산
    - Nested class는 Outer class의 paramter에 접근할 수 없다.
    - Nested class는 Outer.Nested()와 같이 Outer 클래스를 통해 객체를 생성하지만, Inner class는 Outer().Nested()와 같이 Outer 객체를 통해서 생성한다.
    - A 클래스의 확장함수를 B 클래스의 body에서 정의할 수 있다. 생성된 A의 확장함수를 B만 호출할 수 있고, A는 호출하지 못한다.
    - 제네릭 upper bounds를 생략하면 기본값인 Any?로 설정된다.
  3. 의존성 주입 강의
    - 2.3 Hilt로 시작하는 나의 첫번째 의존주입
    - 2.4 Hilt 내부 동작 이해
  4. 코틀린 코루틴 책 학습 16장 채널 일부 내용
    - for .. in은 무엇일까요?
    https://dodobest.tistory.com/66
  5. 내일배움캠프 3주차 강의 보기
    - 오버로딩 작성시, 반환형은 상관 없고, 매개변수의 갯수나 타입이 달라야 한다! 반환형만 다르다면 오류로 컴파일이 되지 않는다.
    - body 없이 선언된 메소드를 추상 메소드라고 부른다. 인터페이스는 추상 메소드만 작성하는 것이 원칙이지만, 최근에는 추상 메소드가 아닌 메소드를 선언도 허용한다. 그러나 되도록 추상 메소드를 사용하자.
    - 인터페이스는 왜 필요한가? -> 클래스는 한 개의 클래스만 상속할 수 있다. 만약 여러 클래스의 기능을 상속해서 사용해야 한다면? -> 가장 중요한, 관련있는 클래스를 상속하고 부가적인 것들은 인터페이스로 선언하여 구현한다.
    - 아래 Nice 클래스의 body에 있는 생성자는 부생성자이다. class 이름 옆에 주생성자가 없어, body에 있는 생성자가 주생성자로 된다고 생각했는데, 아니였다! 그래서 init이 먼저 출력된다.
class Nice {
    constructor(name: String, age: Int) {
        println("부생성자") // 2
    }
    init {
        println("init") // 1
    }
}

fun main() {
    val character = Nice("A", 3)
}

'TIL' 카테고리의 다른 글

240311 TIL  (0) 2024.03.11
240309 TIL - 면접을 위한 공부를 하지 말자  (0) 2024.03.09
240307 TIL - 네이버에 합격하는 분들은 어떤 사고를 하실까  (0) 2024.03.07
240306 TIL  (0) 2024.03.06
240305 TIL - sealed class  (0) 2024.03.05