자바에서는 매개체에대한 정보를 관리하기위해 또는 기능을 내기위해 클래스 -> 객체를 만들지만
코틀린에서는 객체를 생성하는거 외의 목적으로 만드는것들은 다 함수로 만든다.
그래서 코틀린에서의 클래스는 매개체에 대한 정보만을 관리하기 위한 클래스 하지만 이것만으로는 우리가 원하는 기능을 낼수 없으니 거기에 부가적인 기능을 추가한것이 DataClass
abstract,open, sealed, inner 로 클래스 정의 불가
순수하게 특정 매개체 정보 관리를 위해만 사용
반드시 주 생성자 가지고 있어야함
= 객체 생성시 타입을 정하겠다라는 의미이다. 자바와 매우 흡사하다.
자바의 내부클래스와 매우 비슷하다
내부 클래스에서 외부 클래스 사용은 자유롭지만 외부에서 내부는 그렇지 못하다.
내부 클래스를 사용하려면 외부클래스가 객체화 되있어야한다.
자바의 익명클래스 와 매우 흡사하다. 사용법도 거의 흡사하다.
인터페이스나 추상클래스 생성과 동시에 바로 오버라이딩해서 사용
한번만 사용가능/ 객체화 불가
? = 널이 들어올수도 , 널이 아닌 값이 들어올수도 있다.
?: (Elvis 연산자) = 널이 들어오면 기본값(디폴트) 값 사용, 널이 아니면 그대로 사용(오류발생 x)
?.(safe call)= 널이 들어올수도 있는값에 변수나 ,메서드 사용시 사용 널이면 널반환(오류발생 x)
!! = 널이 들어올수도 , 널이 아닌 값이 올수도 -> 널이 못들어오게 한다.
자바의 형변환과 매우 흡사
코틀린은 모든 값을 객체로 관리하기 떄문에 코틀린에서의 형변환은 다른 클래스 타입의 객체로 변환하는것을 의미
형 변환은 객체의 클래스 타입이 아닌 객체의 주소 값을 가지고 있는 참조 변수의 타입이 변경되는 것이다.
객체의 타입변환은 상속관계, 구현한 인터페이스 타입에 해당한다.
-자식클래스 타입으로 변환
-부모클래스 타입으로 변환
-다른 자료형 타입으로의 변환