-
Kotlin Basic grammeretc/코틀린_안드로이드 2022. 10. 6. 18:15
Array Vs List Vs ArrayList
ArrayList 를 쓰자.
1.Array : 배열 크기 고정
2.List : 읽기 전용
3. ArrayList = 둘 합친거
Lambda expression: Noname function
우리는 일상속에 있는 개념을 데이터와 로직 함수등으로 전환을 하고 이를 010101 과 같은 컴퓨터 언어로 바꾸는 작업을 하는 "객체지향"을 추구 한다.
코틀린은 자바를 대신하여 사용하는 안드로이드에서 공식적으로 인정한 언어 이므로 다음 개념 및 앞으로의 개념을 볼때 단순하게 문법을 보는게 아니라
어떻게 사용할지 생각 하고 보는것이 맞다라고 본다 . 자세한 문법은 공식 문서 및 다른 사람들의 블로그를 보면 잘 나와있다 . 그걸 보자.
1. 접근 제한자
접근 제한자를 왜 쓸까?
프로젝트를 하다보면 당연하게 다른 팀원과의 협업이 있고 코드가 커지면서 (모놀리식 아키텍처 특히) , 다른 사람이 작성한
라이브러리 및 클라스 에서 호출하는 일이 빈번하다.
예를 들어) C 라는 클라스에서 작업을 하는 나는 단순하게 A 라는 클라스의 있는 멤버 함수를 불렀고 멤버값 set()을 이용하여 변경을 주었는데 , 기존의 다른 팀원이 작성하던 A 클라스에 의존적인 B 라는 클라스에서 에러 가 터진다.
oop 의 특성상 클라스들을 레이어로 쌓아 올리고 이들은 서로 독립적이지만(주장 은 독립 실제 코드들은 종속적인 케이스가 많다.),
접근을 제한 하지 않는다면 어디서 어떻게 내부 로직이 변경되거나 주석처리를 했던 리턴값이 아닌 다른 값이 나올 수 가 있다.
위의 관점에서 접근 제한자를 보자 .
public,private,Internal,protected ,open
자바 를 사용한 입장에서는 private 과 public 이 친근하다. -> 아마 코틀린에서 대부분 이 두개를 사용한다.
단위는 블럭 단위 로 생각을하자
private - > 블록에서만 요소에 접근할 수 있게 해준다. 코틀린은 기본이 public 이니 private 을 항상 고려하자. 특하 함수 선언시
Internal : 신박한 친구다, 자바에는 없고 코틀린 만의 기능이다. Internal 은 프로젝트의 "모듈" 안에서 누구가 접근이 가능하다
protected :최상위에 정의되는 클래스에 사용 하며 인터페이스에서는 사용할 수 없다.
아니 왜 ? 인터페이스에 사용을 못하나 ? 라고 물으시면, 인터 페이스를 보고 오자 , 인터페이스의 개념의 따라 당연하게 보일것이다.
정리)
- public : project 내부 모든 곳에서 접근이 가능하다.
- private : propertiees , fields 등이 선언된 블록에서만 접근이 가능하다. => 선언된 장소에서만 사용이 가능하다.
추가로 prvate package 를 선언하면 다른 파일에서는 접근이 불가 하다. same file same class
- open : java 와 반대로 class 의 선언시 상속을 할거면 open 을 적어준다.
- protected : 클래스 내부와 상속받는 객체에서 접근이 가능합니다 , top level Packages 는 보호가 불가 하다.
- Internal :프로젝트의 모듈 안의 누구나 접근이 가능합니다. , internal (class,fun,val)
SafeCast & UnsafeCast
예외를 피하기 위하여 "as?" 를 사용한 safeCast 를 사용하자
fun <T> safeCast(t: T){ val res = t as? String //Type: String? } fun <T> unsafeCast(t: T){ val res = t as String? //Type: String? } fun test(){ safeCast(1234); //No exception, `res` is null safeCast(null); //No exception, `res` is null safeCast("aa"); // res = aa (String) unsafeCast(1234);//throws a ClassCastException }
Try catch final , if else throw Exception
try catch finally 를 이용하는 방식은 자바와 동일 하며, Transaction 처리를 할때 유용하게 사용이 가능하다.
에 )
try : db connect, etc query
catch: rollback()
finally: commit and flush .
- Try catch : 정상적인 프로그램 흐름이 아닌 제어할 수 없는 문제 : 블럭
에러 발생시 객체를 전부 소멸 시켜 다른 곳에서의 참조를 막는다. -> 메모리 누수 방지
- if else: 정상적인 흐름과 오류 검사 : 구문
에러를 처리하는 중에도 값을 참조 할 수가 있다.
'etc > 코틀린_안드로이드' 카테고리의 다른 글
Kotlin Android Class (0) 2022.10.06 Kotlin if vs when 성능 비교 ? (0) 2022.09.29 Kotlin Nullable (0) 2022.09.29 Deep in to Kotlin(feat .android) (0) 2022.09.27 코틀린 자바 장단점 비교, Kotlin vs Java (1) 2022.09.25