- 접근제한자 => 관련용어: 캡슐화
> 내/외부 코드에서 해당 클래스, 메소드, 프로퍼티에 접근(호출) 권한을 나눔
- 용어 정리
- 프로젝트: 최상단 개념이고 <모듈, 패키지, 클래스>를 포함
- 모듈: 프로젝트 아래의 개념이고 <패키지, 클래스>를 포함
- 패키지: 모듈 아래의 개념이고 <클래스>를 포함
- 종류
>public: 명시하지 않으면 기본적으로 public 입니다 (어디서나 접근할 수 있어요)
>private: 동일한 클래스 내부에서만 접근할 수 있습니다
>internal: 같은 모듈 내부에서만 접근할 수 있습니다
>protected: 기본적으로 private이지만 상속을 받은경우에 타 모듈에서 접근할 수 있습니다
- 예외 처리
> 코드 실행시 발생할 수 있는(예상되는) 애러 혹은 예외상황 발생시 지정해둔 코드를 실행하게 하는 기능
- try-catch의 구조
fun method1() { try { 예외가 발생할 가능성이 존재하는 코드 } catch(예외종류) { 예외가 발생했을때 처리할 코드 } }- throw의 구조
fun method1(num1:Int) { if(num1 > 10) { throw 예외종류 } }
- 지연초기화
변수나 상수 선언후 초기화를 나중에 해야할때 => 주로 API 값의 경우
변수 -> lateinit var 변수명 : 변수타입[생략가능]
상수 -> val 변수명 : 변수타입[생략가능] by lazy- 널 세이프티
Kotlin은 언어 차원에서 Null 안정성(Null Safety)을 지원한다
= 자바 등 다른 언어에서 흔히 발생하는 NPE(Null Pointer Exception)을 방지하도록 설계되어 있어 더욱 안전하고 신뢰성 있는 코드를 작성할수있다.
- Null Safety 관련 연선자
1. Nullable("변수명?")과 Non-nullable 타입
> var nonNullable: String = "Hello, Kotlin!"Non-nullable (null을 허용하지 않음)
> var nullable: String? = nullNullable (null을 허용함)
- Safe Call Operator (?.)
> null 가능성이 있는 객체의 메소드나 속성에 안전하게 접근할 수 있다.
객체가 null이 아니면 메소드나 속성에 접근하고, null이면 연산 전체가 null을 리턴한다var nullable: String? = null val length: Int? = nullable?.length // nullable이 null이면 length는 null- Elvis Operator (?:)
> 왼쪽 피연산자가 null이 아니면 그 값을, null이면 오른쪽 값을 리턴한다.
이를 통해 null 처리를 간결하게 할 수 있다.var nullable: String? = null // nullable이 null이면 safeLength는 0 val safeLength: Int = if(nullable != null) nullable.length else 0 // if-else val safeLength: Int = nullable?.length ?: 0 // Elvis- Not-null Assertion Operator (!!)
> 개발자 판단 아래 null이 아님을 확신하는 것.
만약 변수가 null이면, 이 연산자를 사용했을 때 Null Pointer Exception이 발생한다.(런타임)
- 정말 필요한 경우가 아니라면 잘 쓰지 않는 것이 좋을 것 같다.var nullable: String? = null val unsafeLength: Int = nullable!!.length // nullable이 null이면 예외 발생- Safe Casts (as?)
> 타입 캐스팅을 시도하되, 캐스팅이 불가능하면 null을 리턴한다.
타입 캐스팅 시 예외 발생을 방지할 수 있다.
*캐스팅 = 데이터 타입 형 변환//`String` 타입인 "nullable"을 Int 타인인 "aNumber"로 변경 하려는 코드 var nullable: String? = null val aNumber: Int? = nullable as? Int // 캐스팅 실패 시 aNumber는 null
- 상황에 포기하지말구... 시간을 쪼개서 조금씩이라도 석장 하자구,,,🔥