클래스 - 오브젝트, 컴패니언오브젝트, 데이터클래스
*오브젝트(object)
-클래스를 생성자로 인스턴스화 하지 않아도 블록 안의 프로퍼티와 메서드 호출가능(java의 static역할)
-ex. Log클래스의 메서드 d(), e()는 모두 object코드블록 안에 만들어져 있어 생성자 없이 호출해서 사용함
-클래스명을 그대로 사용, 첫 글자는 대문자
-object는 클래스와 다르게 앱 전체에 1개만 생성됨
*컴패니언 오브젝트(companion object)
-일반 클래스에 object기능을 추가하기 위해 사용, 생성과정 없이 사용 가능하게 됨
-클래스 내부 오브젝트 기능을 사용할 코드들을 컴패니언 오브젝트로 감싸줌
-컴패니언 오브젝트 안의 코드들은 클래스 생성자 호출없이 사용 가능
-class로 선언했기 때문에 일반함수 walk()는 생성자를 호출해 인스턴스화하여 변수에 저장 후 사용
*데이터 클래스
-간단한 값의 저장 용도
-주로 네트워크를 통해 데이터를 주고받거나, 로컬앱의 데이터베이스에서 데이터를 다루기 위한 용도로 사용함
-데이터 클래스 정의 : class앞에 data키워드를 사용하며 생성자 파라미터 앞에 입력하는 var, val키워드는 생략할 수 없음
-생성코드는 일반 클래스와 동일하게 작성
--toString() 메서드 : 데이터 클래스에서는 값을 반환하여 실제 값 모니터링 시 사용(일반 클래스에서 호출 시 인스턴스의 주소값 반환)
Log.d(" 키워드 ", " 데이터 유저는 ${ dataUser.toString() } ")
-> 결과 : 데이터 유저는(name=Michael, age=21)
--copy() 메서드 : 데이터 클래스의 값을 복사하여 변수에 저장
var newData = dataUser.copy()
이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.