๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Note for moment

[Java] ํด๋ž˜์Šค ๋กœ๋“œ, ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ, ์ง€์ •์ž

by ๐Ÿ’œautumn 2020. 9. 3.

1. ํด๋ž˜์Šค๊ฐ€ ๋กœ๋“œ๋˜๋Š” ์ˆœ์„œ

   1) ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ๋˜์–ด ํด๋ž˜์ฆˆ(clazz)

      ํ˜•ํƒœ๋กœ static์˜์—ญ์— ์œ„์น˜

       [ ํด๋ž˜์ฆˆ์˜ ๊ตฌ์„ฑ์š”์†Œ : ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์†Œ๋“œ ]

  2) ํด๋ž˜์ฆˆ์˜ ์ƒ์„ฑ์ž(new์—ฐ์‚ฐ์ž ํ™œ์šฉ)๋กœ๋ถ€ํ„ฐ

     ์ธ์Šคํ„ด์Šค๋ฅผ heap์— ์ƒ์„ฑ

      [ ์ธ์Šคํ„ด์Šค์˜ ์š”์†Œ : ํด๋ž˜์Šค, ํ•„๋“œ (๋ฉ”์†Œ๋“œ ์—†์Œ!) ]

       ์ด๋•Œ ํ•„๋“œ๋Š” ์ฃผ๋กœ ์€๋‹‰ํ™” ์ฒ˜๋ฆฌ โ†’ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ

       ๋”ฐ๋ผ์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ ‘๊ทผ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์€ ์˜ค์ง

       ํด๋ž˜์Šค(ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋กœ๋ถ€ํ„ฐ ํ˜ธ์ถœ๋œ ๊ฒƒ)

  3) ์ธ์Šคํ„ด์Šค์˜ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณ€๊ฒฝ ๋ฐ ์‹คํ–‰

     ํ•˜๊ธฐ ์œ„ํ•ด stack์˜์—ญ์— ์ฐธ์กฐ๋ณ€์ˆ˜ ์ƒ์„ฑ

       ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” Heap์˜ ํ•„๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ์— ํด๋ž˜์Šค์— ์ ‘๊ทผ!

       ํด๋ž˜์Šค๋กœ static๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ํ•„๋“œ๋ณ€๊ฒฝ๋„ ๊ฐ€๋Šฅ

 

 

2. Java์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

 

 

3. ์ง€์ •์ž(Modifier)

    1) ์ ‘๊ทผ์ง€์ •์ž(Access Modifies) ํ—ˆ์šฉ ๋ฒ”์œ„

        : ํด๋ž˜์Šค/ํ•„๋“œ/์ƒ์„ฑ์ž/๋ฉ”์†Œ๋“œ ๋ชจ๋‘ ์‚ฌ์šฉ๊ฐ€๋Šฅ

    2) ํด๋ž˜์Šค์ง€์ •์ž - static

        : ํ•„๋“œ/๋ฉ”์†Œ๋“œ/์ด๋„ˆํด๋ž˜์Šค๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ > ์ƒ์„ฑ์ž ์‚ฌ์šฉ๋ถˆ๊ฐ€

        : ์ •์ ํ•„๋“œ(๊ณต์œ ์šฉ), ์ •์ ๋ฉ”์†Œ๋“œ(์ •์ ํ•„๋“œ ์ œ์–ด์šฉ)

 

    3) ์ถ”์ƒ์ง€์ •์ž - abstract

        : ํด๋ž˜์Šค/๋ฉ”์†Œ๋“œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ > ํ•„๋“œ/์ƒ์„ฑ์ž ์‚ฌ์šฉ๋ถˆ๊ฐ€

        : ์ถ”์ƒํด๋ž˜์Šค, ์ถ”์ƒ๋ฉ”์†Œ๋“œ(์ž‘์—…์ง€์‹œ์ž) 

 

    4) ํŒŒ์ด๋„์ง€์ •์ž - final

        : ํ•„๋“œ/๋ฉ”์†Œ๋“œ/ํด๋ž˜์Šค ์‚ฌ์šฉ๊ฐ€๋Šฅ

        : ์ƒ์ˆ˜ํ•„๋“œ, ํŒŒ์ด๋„ ๋ฉ”์†Œ๋“œ 

        : ๋ณ€๊ฒฝ๋ถˆ๊ฐ€

๋Œ“๊ธ€