1. 코틀린 Any, Unit, Nothing 타입을 설명하시오.
Any : 자바에서 Object 가 클래스 계층의 최상위 타입이듯, 코틀린에서는 Any 가 그 역할을 한다. 자바 Object 와 차이는 자바는 참조 타입만 Object 를 정점으로 하는 타입 계층에 포함되지만, 코틀린은 Int 와 같은 원시 타입도 포함할 수 있다.
Unit : 자바와 Void 는 같은 기능이다. 자바와 다른 점은 Unit 은 모든 기능을 갖는 일반적인 타입이라는 점이다. Unit 타입에 속한 값은 단 하나 뿐이며, 그 이름도 Unit 이다. void 와 달리 Unit 은 타입 인자로도 사용 가능하다. Unit 타입의 함수는 Unit 값을 묵시적으로 반환하게 된다.
Nothing : 코틀린에는 결코 성공적으로 값을 돌려주는 일이 없으므로 '반환 값' 이라는 개념 자체가 의미 없는 함수가 일부 존재한다. Nothing 타입은 아무 값도 포함하지 않는다는 것이고 함수의 반환 타입이나 반환타입으로 쓰일 타입 파라미터로 쓰일 수가 있다.
2. open class 란?
코틀린에서는 클래스와 메서드가 기본적으로 final 이 붙는다. 즉, 상속이 불가능하다.
따라서 어떤 클래스의 상속을 허용하기 위해선 클래스 앞에 open 변경자를 붙여야 한다.
그와 더불어 오버라이드를 허용하고 싶은 메소드나 프로퍼티 앞에도 open 변경자를 붙어야 한다.
3. internal class 란?
패키지 전용 가시성에 대한 대안으로 코틀린에서 새롭게 도입한 가시성 변경자로, 같은 모듈 내에서만 볼 수 있다.
💡 모듈은 한꺼번에 컴파일되는 코틀린 파일들을 의미한다.
자바의 기본 가시성인 패키지 전용은 코틀린에는 없다.
코틀린은 패키지를 네임스페이스 관리하기 위한 용도로만 사용한다. 따라서 패키지를 가시성 제어에 사용하지 않는다.
그래서 internal 이라는 새로운 가기성 변경자가 도입 됐다.
코틀린의 protected 는 자바와 다르다. protected 를 사용한다면 오직 어떤 클래스나 그 클래스를 상속한 클래스 안에서만 보인다.
4. sealed class 란?
추상 클래스(abstract)로 상속 받는 자식 클래스(child class)의 종류를 제한하는 특성을 가진다. 즉, 컴파일러에서 sealed class 의 자식 클래스가 어떤 것인지 알수가 있어서 컴파일 단에서 개발자의 실수를 방지할 수 있다.
분기 처리 시, 노에러!
5. companion object 란?
동반 객체라는 뜻으로 객체 생성 없이 변수와 메서드 등을 선언하여 사용하기 위해 코틀린에서 자바의 static 과 같은 역할을 사용하기 위해 쓰인다.
'Android Q&A > Android One a day' 카테고리의 다른 글
[안드로이드 면접] - 14 : (0) | 2023.02.13 |
---|---|
[안드로이드 면접] - 13 : (0) | 2023.02.09 |
[안드로이드 면접] - 11 : (0) | 2023.02.03 |
[안드로이드 면접] - 10 : (0) | 2023.02.02 |
[안드로이드 면접] - 9 : (0) | 2023.02.01 |