대기업을 향한 디벨롭 블로그

companion Object (동반자 오브젝트) 본문

나는안드로이드개발자

companion Object (동반자 오브젝트)

MHY.PRO 2022. 5. 24. 16:14

이번엔 오브젝트에 대해 알아보자. object는 싱글턴 패턴이 적용된것이다.

일단 오브젝트는 하나의 객체를 가지고 , 인스턴스없이 사용할 수 있다. 하지만 object의 값은 무조건 공용?공통?이다. 말로 설명하기가 뭔가 애매하다. 내가 설명을 잘 못한다. 예제를 보면 이해가 될거다.

간단한 예제이다. 오브젝트는 Singleton패턴이며 , 하나의 객체를 공통으로 사용하는것이다. 

위의 코드의 출력

오브젝트는 무조건 하나만의 객체이므로 변수에담든 뭘하든 그 object안에 있는값들은 바뀐다. 클래스와는 다름

변수 a에 담아서 참조하여 countup을 하여도 결국 Counter라는 오브젝트의 변수 count값이 올라가는것이다.

위의 코드의 출력값

다음은 class안에 공통으로 쓸 수 있는 companion object를 알아보자. 예제!

companion object예제

companion object는 클래스 안에 object로 위에서 알아보았던 object와 똑같다. 다만 class안에있기 때문에 인스턴스하여 참조해서 쓰는 것 뿐이다. 클래스안에서 공통으로 쓰는것이기 때문에 인스턴스된 모든 객체들이 공통으로 가지고 있고 , 값도 공통된다. 

본인의 정치색과는 관련이없음을 알림니다.

1. yoon 과 lee 에 president클래스를 인스턴스하였다.

2. 투표시작을 출력하고.

3.president클래스안에 vote()메소드를 통해 각자의 객체의 count를 1올려준다.

4.vote메소드안에 total++ 는 companion object안에 변수이기때문에 공통변수이다.

5.yoon에서 참조하든 , lee에서 참조하든 값은 같이 올란다. (총득표수를 구할 수 있음)

6.결과 출력

위의 코드의 출력값 (정치색과는 관련없습니다)

여기까지 object에 대해알아보았고 , 계속해서 알아볼거다.