실용성
코틀린은 연구를 위한 언어가 아님
java와의 상호운용성
java 라이브러리 그대로 사용 가능
자바와 코틀린 소스를 섞어 쓸 수 있음 (어떤 의존성이 있어도 가능하다고 함..)
안전성
안전성은 프로그램에서 발생할 수 있는 오류 중에 일부를 설계가 원천적으로 방지해준다는 뜻
안전성과 생산성은 trade off 관계가 있다
코틀린을 JVM에서 실행한다는 것이 상당한 안전성을 보장한다는 것이라고 함
타입 추론, 널이 될 수 있는 값, 캐스트 관련해서 java보다 더 나음
간결성
언어의 간결성은 의도 파악이 쉬운 구문 구조를 제공하고, 번거로운 코드가 적은 것
코틀린이 js를 지원한다는게 어떤 느낌인지 모르겠음. 본 적 없어서
static typing이 뭔지 알긴하는데 설명할 정도로 정확히는 모르겠음
static typed면 컴파일 시점에 모든 구성 요소의 타입을 알 수 있고,
사용할 때마다 컴파일러가 타입을 검증해준다??
코틀린 코드에서 java 클래스를 상속하면?
코틀린에서 변수는 다 참조 타입? java도 실제로는 다 참조 타입인건가?
-> 메모리 구조 다시 봐야할 듯
코틀린은 왜 접근 제한이 없고 다 public인지?
커스텀 접근자 잘 이해 안 됨
smart cast 잘 이해 안 되고 원리 모름
코틀린은 왜 checked/unchecked exception을 구별하지 않는지?
unchecked exception 사용을 지양하기 때문?
코틀린은 객체 생성할 때 왜 new 안 붙임?
확장 함수 잘 모름. 까먹음
-> 확장함수는 클래스의 멤버 메소드를 선언 시점 이후에도 추가할 수 있는 기능이라 해도 될 듯
확장 함수는 override가 안 된다?
확장 프로퍼티 잘 모르겠음
어떻게 다른 JVM 언어로 작성된 클래스도 확장 가능한지 동작원리 모름
코틀린이 자체 컬렉션이 없다고하는데 mutableListOf같은 건 java의 list를 구현한건가?
open 키워드 모름
https://www.baeldung.com/kotlin/open-keyword