Android App/Kotlin

클래스 - 오브젝트, 컴패니언오브젝트, 데이터클래스

AppJinny 2022. 10. 28. 04:53

*오브젝트(object)

-클래스를 생성자로 인스턴스화 하지 않아도 블록 안의 프로퍼티와 메서드 호출가능(java의 static역할)

-ex. Log클래스의 메서드 d(), e()는 모두 object코드블록 안에 만들어져 있어 생성자 없이 호출해서 사용함

-클래스명을 그대로 사용, 첫 글자는 대문자

-object는 클래스와 다르게 앱 전체에 1개만 생성됨

object 정의
클래스를 생성자로 인스턴스화 없이 사용가능
실행 결과

 

*컴패니언 오브젝트(companion object)

-일반 클래스에 object기능을 추가하기 위해 사용, 생성과정 없이 사용 가능하게 됨

-클래스 내부 오브젝트 기능을 사용할 코드들을 컴패니언 오브젝트로 감싸줌

-컴패니언 오브젝트 안의 코드들은 클래스 생성자 호출없이 사용 가능

-class로 선언했기 때문에 일반함수 walk()는 생성자를 호출해 인스턴스화하여 변수에 저장 후 사용

 

 

*데이터 클래스

-간단한 값의 저장 용도

-주로 네트워크를 통해 데이터를 주고받거나, 로컬앱의 데이터베이스에서 데이터를 다루기 위한 용도로 사용함

-데이터 클래스 정의 : class앞에 data키워드를 사용하며 생성자 파라미터 앞에 입력하는 var, val키워드는 생략할 수 없음

-생성코드는 일반 클래스와 동일하게 작성

--toString() 메서드 : 데이터 클래스에서는 값을 반환하여 실제 값 모니터링 시 사용(일반 클래스에서 호출 시 인스턴스의 주소값 반환)

Log.d(" 키워드 ", " 데이터 유저는 ${ dataUser.toString() } ")

    -> 결과 : 데이터 유저는(name=Michael, age=21)

--copy() 메서드 : 데이터 클래스의 값을 복사하여 변수에 저장

var newData = dataUser.copy()

 


이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.