Companion Object๋ ๋๋ฐ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฆฌ๋ ํด๋์ค ๋ด๋ถ์ ์ ์ํ๋ ๊ฐ์ฒด๋ก, ํด๋์ค์ ํ๋กํผํฐ๋ ๋ฉ์๋ ์ ์ธ์ด ๊ฐ๋ฅํ๋ค.
์๋ฐ์ Static์ ์ ์ ์ธ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ๋๋ฐ ์ฌ์ฉ๋๋ ํค์๋์ด๋ค.
์ด๋ค์ ๊ฐ์ฒด์ ์์๋ ๋ฉค๋ฒ๊ฐ ์๋ ํด๋์ค์ ๊ณ ์ ๋ ๋ฉค๋ฒ๋ก, ํด๋์ค ๋ก๋ฉ์ด ๋๋๋ ์ฆ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ ํด๋์ค ๋ณ๋ก ๊ด๋ฆฌ๋๋ค. ๋ฐ๋ผ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์ธ๋ถ์์ ํธ์ถํ ์ ์์ด ์ ํธ ํจ์๋ฅผ ๋ง๋ค ๋ ์ข ์ข ์ฌ์ฉ๋๋ค.
public class NameUtils {
public static String getName(String lastName, String firstName) {
return lastName + firstName;
}
}
// ์ธ์คํด์ค ์์ฑ ํ ์ฌ์ฉ
NameUtils nameUtils = new NameUtils();
nameUtils.getName("์ผ", "๋ก๋ก");
// ์ธ์คํด์ค ์์ฑ ์์ด ์ฌ์ฉ
NameUtils.getName("ํ", "๋ง๋ง");
object ํค์๋๋ ์๋ฐ์ static๊ณผ new ํค์๋๋ฅผ ๋์ ํ๋ค๊ณ ์ฌ๊ธธ ์ ์์ผ๋ฉฐ, ํด๋์ค๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๋ ๊ฒ๊น์ง ๋์์ ํ ์ ์๋ค.
object Person {
val name: String = "ozzing"
}
Person์ ์ ์ธํจ์ผ๋ก์จ Person ํด๋์ค๋ฅผ ์์ฑํ๊ณ ozzing์ด๋ผ๋ ์ด๋ฆ์ ์ ์ฌํ๋ค.
๋ค์ํ ์ฐจ์ด์ ์ด ์์ง๋ง ์ ์ธ๊ณผ ์ ๊ทผ์์์ ๊ฐ๋จํ ์ฐจ์ด๋ง ํ์ ํ์๋ค.
ํด๋์ค ๋ด๋ถ์ object๋ฅผ ์ ์ธํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ์ ์ธํ ์ ์๋ค.
class PersonClass {
object Person {
val name: String = "ozzing"
}
}
์ด ๊ฒฝ์ฐ ์ด๋ฆ์ ์์๋ด๊ธฐ ์ํด์๋ PersonClass.Person.name๊ณผ ๊ฐ์ด ์ ๊ทผํด์ผ ํ๋ค.
class PersonClass {
companion object {
val name: String = "ozzing"
}
}
๋ฐ๋ฉด companion object์ ๊ฒฝ์ฐ ๋๋ฐ ๊ฐ์ฒด๋ก ํด๋์ค ๋ด๋ถ ๊ฐ์ฒด์ ์ ๊ทผํ ๋ PersonClass.name๊ณผ ๊ฐ์ด ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค.
์ด์ ๋ object ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ object Person ๋ด์์ new๋ก ๊ฐ์ฒด๊ฐ ์๋ก ์์ฑ๋๊ณ ๋ณ์๊ฐ ํ ๋น๋๋ ๋ฐ๋ฉด, companion object์ ์ฌ์ฉํ๋ฉด object ๋ฐ์ธ PersonClass์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ณ์๋ฅผ ํ ๋นํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ ์ง๋ง ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ๊ฐ์ฒด๋ช ์ ์ง์ด์ค ์๋ ์๋ค.
class PersonClass {
companion object Person {
val name: String = "ozzing"
}
}
์ด ๊ฒฝ์ฐ์๋ PersonClass.Name๊ณผ PersonClass.Person.name, Person.Name ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
์๋ฐ์ static๊ณผ ๋ง์ด ๋น๊ตํ์ง๋ง ์ค์ ๋ก๋ 'staticํ ํด๋์ค'๊ฐ ์๋ '๊ฐ์ฒด'์ด๊ธฐ ๋๋ฌธ์ ์ฐจ์ด์ ์ด ์๋ค.
[๋น์ทํ ์ ]
[๋ค๋ฅธ ์ ]
[๊ทธ๋ฅ ์ ]