Static Keyword
static keyword๋ field, method, class์ ์ ์ฉํ ์ ์๋ค
Static Field (๋ณ์, ์์)
class ์์์ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด member ๋ณ์๋ก ์ ์ธ์ด ๋๊ณ ,
car.name
์ฒ๋ผ ๊ฐ์ฒด๋ฅผ ํตํด์ ์ ๊ทผํด์ผ ํ๋คbut, static keyword๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด
Class๋ฅผ ํตํด์๋ ์ ๊ทผ ๊ฐ๋ฅ
ํ๋คClass๋ฅผ ํตํด์ ์ ๊ทผํ๊ฒ ๋๋ฉด,
๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์๊ณ
์ธ๋ถ์์ ์ ๊ทผ
ํ ์ ์๋ค๊ฐ์ฒด๋ฅผ ํตํด์๋ ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ง, Class๋ฅผ ํตํด ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๊ถ์ฅํ๋ค
why?
member ๋ณ์์ ์ ๊ทผํ๋ ๊ฒ์ธ์ง, static ๋ณ์์ ์ ๊ทผํ๋ ๊ฒ์ธ์ง ์ฝ๊ฒ ๊ตฌ๋ถ์ด ์๋๊ธฐ ๋๋ฌธ!
static์ผ๋ก ์ ์ธ๋ ๋ณ์๋
ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋
์์ฑ ๋ฐ ์ด๊ธฐํ ๋๋ค๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋,
๋ณ์๋ ์ด๋ฏธ ์์ฑ๋ ์ํ
์ด๋ค!
final static
์ผ๋ก ์ ์ธํ๋ฉด, ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋์์
๊ฐ ๋๋ค๋ณดํต static ์์๋ฅผ ์ฝ๊ฒ ๊ตฌ๋ถํ๊ธฐ ์ํด, ๊ด์ต์ ์ผ๋ก
๋๋ฌธ์
์ underscore (_
) ๋ง์ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ ์ง๋๋ค
์ ๊ทผ ์ ํ์
static field๋ฅผ ์ ์ธํ ๋ ์ ๊ทผ ์ ํ์๋ฅผ ํตํด ๊ณต๊ฐํ๊ณ ์ถ์ ๋ฒ์๋ฅผ ์ค์ ํ ์ ์๋ค
์ฌ์ฉํ๋ ์ด์
๋๋ถ๋ถ static field๋
์์๋ฅผ ์ ์ธ
ํ ๋ ๋ง์ด ์ฌ์ฉํ๋คfinal static
keyword๋ก ์์๋ฅผ ์ ์ธํ๋ฉด, ๋ค๋ฅธ Class ์์๋ ์์์ ์ ๊ทผํ ์ ์๋คmember ๋ณ์๋ก ์ ์ธํ ์๋ ์์ง๋ง, ์ด๋ ๊ฒ ๊ตฌํํ๋ฉด ๊ฐ์ฒด๋ง๋ค ์์๋ค์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ํฌ๊ธฐ๊ฐ ์ปค์ง ์ ์๋ค
static์ผ๋ก ๋ณ์๋ฅผ ๋ง์ด ์ ์ธํ๋ฉด ๊ฐ์ฒด์งํฅ๊ณผ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์ด์ง๊ณ , ์์นซ ์คํ๊ฒํฐ ์ฝ๋ (๋ณต์กํ๊ฒ ์ฝํ ์ฝ๋)๊ฐ ๋๊ธฐ ์ฌ์ธ ์ ์๋ค
Static Method
static method๋ static field์ ์ ์ฌํ๋ค
method ์ ์ธ ์ static keyword๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋ ํด๋น method๋ฅผ ํธ์ถํ ์ ์๋ค
๊ฐ์ฒด method๋ฅผ ํธ์ถํ๋ ๊ฒ์ธ์ง, static method๋ฅผ ํธ์ถํ๋ ๊ฒ์ธ์ง ๊ตฌ๋ถ์ด ์๋๊ธฐ ๋๋ฌธ์
Class๋ฅผ ํตํด์๋ง ํธ์ถ
๋์ด์ผ ํ๋ค์ฃผ์ํ ์
static method ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋ ํธ์ถํ ์ ์๋๋ฐ, ์ด๊ฒ์
method๊ฐ ๊ฐ์ฒด์ ๋ถ๋ฆฌ๋์ด ์๋ค
๋ ์๋ฏธ์ด๋ค๊ทธ๋์
method ๋ด๋ถ
์์super
,this
์ ๊ฐ์ keyword๋ฅผ ์ฌ์ฉํ ์ ์๊ณ ,Class์
member ๋ณ์
์์ ๊ทผ
ํ ์๋ ์๋ค
static method์์๋ method ๋ด๋ถ์ ์ ์ธ๋ ๋ณ์ ์ธ์ static field, static method๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค
์ฌ์ฉํ๋ ์ด์
static method๋ ๋ณดํต
Utils
,Helper
class๋ฅผ ๋ง๋๋ ๋ฐ์ ์ฌ์ฉํ๋คex) Math๋ผ๋ Utils class ๋ง๋ค๊ธฐ
์ํ ์ฐ์ฐ๊ณผ ๊ด๋ จ๋ method๋ค์ Math ๋ผ๋ class ์๋๋ก ๋ชจ์์ฃผ๋ ์ฅ์ ์ด ์๋ค (
grouping
)
Static Class
static keyword๋ฅผ ์ด์ฉํ์ฌ class๋ฅผ ์ ์ธํ๋ฉด, ์์ class์ ๋ถ๋ฆฌ๋ฅผ ํด ์ค๋ค
Inner class
๋์์ class์ ์ฐ๊ฒฐ
๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ class์ member ๋ณ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋คstatic์ผ๋ก ํ์ class๋ฅผ ์ ์ธํ๋ฉด, ์์ class์ member ๋ณ์์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํด์ง๋ค!
์ด๋ ๊ฒ
static์ผ๋ก ์ ์ธ๋ ํ์ class
๋ฅผstatic nested class
๋ผ๊ณ ํ๋ค
Static nested class
๋ ์์ class๊ฐ ์์ฑ๋์ง ์์๋, ์ธ๋ถ์์ ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋คโ ์ด๊ฒ์ด
Inner class
์Static nested class
์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ด๋ค
์ฃผ์ํ ์
static class๋
ํ์ class๋ฅผ ์ ์ธํ ๋
๋ง ๊ฐ๋ฅํ๋ค์์ class๋ฅผ static์ผ๋ก ์ ์ธํ๋ ค๊ณ ํ๋ฉด, compile error๊ฐ ๋ฐ์ํ๋ค
static class
๋ฅผ ์ฌ์ฉํ๋ ์ด์static class๋ก Inner class๋ฅผ ์์ฑํ๋ฉด ์ข์ ์ ์
grouping
์ด๋ค์ด๋ค class์ ์ฐ๊ด๋ class๋ค์ ํ์์ ์ ์ธํ์ฌ ๊ด๋ จ์๋ class๋ฅผ ๋ชจ์๋ ์ ์๋ ์ฅ์ ์ด ์๋ค
์ด๊ฒ์ Inner class๋ก๋ ํ ์๋ ์์ง๋ง, Inner class๋ ์์ class์
์ฐ๊ฒฐ
๋์ด ์์ด ๋ ๋ฆฝ๋ class๊ฐ ์๋๋ค!
Static Keyword ์ฅ์ ์ ๋ฆฌ
static keyword์ ๊ณตํต์ ์
๊ฐ์ฒด์์ ๋ถ๋ฆฌ
์ด๋ค๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ , ์ ๊ทผํ ์ ์๊ฒ ํด์ค๋ค!
Grouping
์ด๋ผ๋ ์ฅ์ ์ ๊ฐ๊ณ ์๋ค์ด๋ค class ํ์์ ์ด์ ๊ด๋ จ ์๋ method, class ๋ฅผ static์ผ๋ก ์ ์ธํ์ฌ ํ ๊ณณ์ ๋ชจ์ ์ ์๋ค!!
Last updated