๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Java] ์ธํ„ฐํŽ˜์ด์Šค์˜ static ๋ฉ”์†Œ๋“œ

์ถœ์ฒ˜

ChatGPT
Gemini


์ž๋ฐ” 8 ๋“ฑ์žฅ ์ „ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” static ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ์ž๋ฐ” 8๋ถ€ํ„ฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— static ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
 

์ „ํ†ต์ ์ธ/์ž๋ฐ” 8 ์ด์ „์— ์ธํ„ฐํŽ˜์ด์Šค์— static ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์—†๋Š” ์ด์œ 

์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ํ–‰์œ„(behavior)๋ฅผ ์ •์˜ํ•˜๋Š” ๊ณ„์•ฝ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
static ๋ฉ”์†Œ๋“œ๋Š” ํŠน์ • ๊ฐ์ฒด์— ์†ํ•˜์ง€ ์•Š๊ณ , ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค. ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
 

์™œ ์ธํ„ฐํŽ˜์ด์Šค์— static ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์—†์„๊นŒ?

1. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ณธ์งˆ๊ณผ ์ถฉ๋Œ

  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด์˜ ํ–‰์œ„๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด์ง€, ํด๋ž˜์Šค ์ž์ฒด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
  • static ๋ฉ”์†Œ๋“œ๋Š” ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ณธ์ง์ ˆ์ธ ์—ญํ• ๊ณผ ๋งž์ง€ ์•Š๋‹ค.

2. ๊ตฌํ˜„ ํด๋ž˜์Šค์™€์˜ ๊ด€๊ณ„

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ static ๋ฉ”์†Œ๋“œ๋Š” ์ด๋ฏธ ์™„์ „ํ•œ ๊ตฌํ˜„์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌํ˜„ ํด๋ž˜์Šค์—์„œ ๋‹ค์‹œ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ™•์žฅ์„ฑ์„ ์ œํ•œํ•˜๊ณ , ์ผ๊ด€์„ฑ์„ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
 

์ธํ„ฐํŽ˜์ด์Šค์˜ ํ™•์žฅ์„ฑ ์ œํ•œ

  • ํ™•์žฅ์„ฑ : ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ฃผ๋กœ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๊ฐ€ ๊ณตํ†ต์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๊ฐ€ ์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ธ์Šคํ„ด์Šค์™€๋Š” ๊ด€๊ณ„์—†์ด ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด์—์„œ๋งŒ ํ˜ธ์ถœ๋œ๋‹ค. ๋”ฐ๋ผ์„œ, static ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜๊ฒŒ ๋˜๋ฉด, ๋‹ค๋ฅธ ๊ตฌํ˜„์ฒด๋‚˜ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ œ์•ฝ: ๋งŒ์•ฝ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ static ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋ฉฐ, ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ง์ ‘์ ์œผ๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ, static ๋ฉ”์„œ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ํด๋ž˜์Šค์—์„œ ์žฌ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ์˜ค๋ฒ„๋ผ์ด๋“œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ™•์žฅ์„ฑ์ด ์ œํ•œ๋œ๋‹ค.

์ผ๊ด€์„ฑ ๊นจ์ง

  • ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฑ…์ž„ : ์ „ํ†ต์ ์œผ๋กœ, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŠน์ • ํ–‰๋™์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ์ธํ„ฐํŽ˜์ด์Šค์˜ ์„ค๊ณ„ ์›์น™๊ณผ ์ผ๊ด€๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ static ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด, ์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฃผ๋œ ์—ญํ• (๊ณ„์•ฝ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ)๊ณผ๋Š” ๋‹ค๋ฅธ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ, ์ด๋Š” ์„ค๊ณ„์˜ ์ผ๊ด€์„ฑ์„ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ ์›์น™ : ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์—์„œ๋Š” ์ฃผ๋กœ ๊ฐ์ฒด์˜ ์ƒํƒœ์™€ ํ–‰๋™์„ ์ •์˜ํ•˜๊ณ , ๊ฐ์ฒด ์ง€ํ–ฅ์  ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค. static ๋ฉ”์„œ๋“œ๋Š” ์ด๋Ÿฌํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™์— ๋งž์ง€ ์•Š์œผ๋ฉฐ, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฐ์ฒด ์ง€ํ–ฅ์  ๋ชฉ์ ๊ณผ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ์™€ ๋ฌธ์ œ์ 

public interface Calculator {
    static int add(int a, int b) {
        return a + b;
    }
}

public class AdvancedCalculator implements Calculator {
    // This class cannot override or use the static method from Calculator directly
}

 

  • ๋ฌธ์ œ : Calculator ์ธํ„ฐํŽ˜์ด์Šค์˜ static ๋ฉ”์„œ๋“œ add๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด์—์„œ๋งŒ ํ˜ธ์ถœ๋œ๋‹ค. AdvancedCalculator์™€ ๊ฐ™์€ ๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

3. ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™ ์œ„๋ฐ˜

๋‹จ์ผ ์ฑ…์ž„ ์›์น™ Single Responsibility Principle

์ด ์›์น™์€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ•์กฐํ•œ๋‹ค. static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฑ…์ž„์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋„ˆ๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ฃผ๋กœ ๊ณ„์•ฝ(์ฆ‰, ๋ฉ”์„œ๋“œ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜)์„ ์ •์˜ํ•˜๊ณ , ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ๊ตฌํ˜„ ํด๋ž˜์Šค์— ๋งž๊ธฐ๋Š” ๊ฒƒ์ด ์›์น™์ด๋‹ค. static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํŠน์ • ๋™์ž‘์„ ์ฑ…์ž„์ง€๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ด ์›์น™์— ์œ„๋ฐฐ๋œ๋‹ค.
 

์‘์ง‘๋ ฅ Cohesion

์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ด€๋ จ๋œ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ๊ณ„์•ฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค์™€ ๊ด€๊ณ„๊ฐ€ ์—†๊ณ , ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด์— ์†ํ•œ๋‹ค. ์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ์ฒด์˜ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ฒŒ ๋งŒ๋“ค๋ฉฐ, ์ด๋กœ ์ธํ•ด ์‘์ง‘๋ ฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ์ฒด์™€ ๋…๋ฆฝ์ ์ธ ๋™์ž‘์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉด์„œ ์„ค๊ณ„๊ฐ€ ๋ถ„์‚ฐ๋  ์ˆ˜ ์žˆ๋‹ค.
 

Java 8 ์ดํ›„์˜ ๋ณ€ํ™”

default ๋ฉ”์†Œ๋“œ

Java 8 ๋ถ€ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค์— default ๋ฉ”์†Œ๋“œ๋ฅผ ๋„์ž…ํ•ด ์ธํ„ฐํŽ˜์ด์Šค์— ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ˜„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

static ๋ฉ”์†Œ๋“œ 

Java 8 ๋ถ€ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค์— static ๋ฉ”์†Œ๋“œ๋ฅผ ๋„์ž…ํ•ด ์ธํ„ฐํŽ˜์ด์Šค ๋ ˆ๋ฒจ์—์„œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
 

Java 8 ์ดํ›„๋ถ€ํ„ฐ์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ static ๋ฉ”์†Œ๋“œ

Java 8๋ถ€ํ„ฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—์„œ static ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค์˜ static ๋ฉ”์„œ๋“œ์˜ ๋ชฉ์  

์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์†Œ๋“œ ์ œ๊ณต

์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ด€๋ จ๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์†Œ๋“œ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด์— ์ •์˜ํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์†Œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ด€๋ จ๋œ ๊ณตํ†ต ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ™•์žฅ : ๊ตฌํ˜„์˜ ์š”๊ตฌ

๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค์— ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ, ๋ชจ๋“  ๊ตฌํ˜„ ํด๋ž˜์Šค์—์„œ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ static ๋ฉ”์„œ๋“œ๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„์—†์ด ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด์— ๋Œ€ํ•œ ๊ณตํ†ต ๋™์ž‘์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

ํ˜ธ์ถœ๋ฐฉ๋ฒ•

  • ์ธํ„ฐํŽ˜์ด์Šค์˜ static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„์„ ํ†ตํ•ด ํ˜ธ์ถœ๋œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, MyInterface.myStaticMethod()์™€ ๊ฐ™์ด ํ˜ธ์ถœํ•œ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค์˜ static ๋ฉ”์„œ๋“œ์˜ ํŠน์ง•

์ธ์Šคํ„ด์Šค์™€ ๋ฌด๊ด€

static ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค์™€ ๊ด€๊ณ„์—†์ด ํ˜ธ์ถœ๋˜๋ฉฐ, ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋‚˜ ํ•„๋“œ์™€๋Š” ์ง์ ‘์ ์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ƒ์†๋˜์ง€ ์•Š์Œ

์ธํ„ฐํŽ˜์ด์Šค์˜ static ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋‚˜ ํด๋ž˜์Šค์—์„œ ์ƒ์†๋˜์ง€ ์•Š๋Š”๋‹ค.

์˜ˆ์ œ

public interface MyInterface {
    // Static method
    static void staticMethod() {
        System.out.println("Static method in MyInterface");
    }

    // Default method
    default void defaultMethod() {
        System.out.println("Default method in MyInterface");
    }
}

public class Test {
    public static void main(String[] args) {
        // Calling the static method
        MyInterface.staticMethod();
        
        // Calling the default method via an instance
        MyInterface myInterface = new MyInterface() {};
        myInterface.defaultMethod();
    }
}

 
 

  • MyInterface ์ธํ„ฐํŽ˜์ด์Šค๋Š” static ๋ฉ”์„œ๋“œ์™€ default ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•œ๋‹ค.
  • staticMethod()๋Š” MyInterface์˜ static ๋ฉ”์„œ๋“œ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„์„ ํ†ตํ•ด ํ˜ธ์ถœ๋œ๋‹ค.
  • defaultMethod()๋Š” default ๋ฉ”์„œ๋“œ๋กœ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋œ๋‹ค.

 


ChatGPT์˜ ์ถœ์ฒ˜
 

  • Oracle Java Documentation - Interface
  • Effective Java by Joshua Bloch - ์ž๋ฐ” 8์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ํŠนํžˆ ์ธํ„ฐํŽ˜์ด์Šค์˜ default ๋ฐ static ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Gemini์˜ ์ถœ์ฒ˜

๋ฐฉ๊ธˆ ์„ค๋ช…๋“œ๋ฆฐ ๋‚ด์šฉ์˜ ์ถœ์ฒ˜์— ๋Œ€ํ•œ ๋‹ต๋ณ€

์ •ํ™•ํ•œ ์ถœ์ฒ˜๋ฅผ ๋ช…์‹œํ•˜๊ธฐ ์–ด๋ ค์šด ์ด์œ 
์ œ๊ฐ€ ๋ฐฉ๊ธˆ ์„ค๋ช…ํ•ด ๋“œ๋ฆฐ ์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค์™€ static ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋‹ค์–‘ํ•œ ์ž๋ฐ” ๊ด€๋ จ ์„œ์ , ์˜จ๋ผ์ธ ๊ฐ•์˜, ๊ทธ๋ฆฌ๊ณ  ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ์ฝ”๋“œ๋ฅผ ํ•™์Šตํ•˜๊ณ  ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•˜์—ฌ ์ž‘์„ฑ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์™œ ํŠน์ • ์ถœ์ฒ˜๋ฅผ ๋ช…์‹œํ•˜๊ธฐ ์–ด๋ ค์šธ๊นŒ์š”?

  • ๋‹ค์–‘ํ•œ ์ •๋ณด ์ข…ํ•ฉ: ํ•˜๋‚˜์˜ ๋‹ต๋ณ€์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ถœ์ฒ˜์˜ ์ •๋ณด๋ฅผ ์ข…ํ•ฉํ•˜๊ณ  ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ, ๊ฐ ์ •๋ณด์˜ ๋น„์ค‘๊ณผ ๊ฒฝ๊ณ„๊ฐ€ ๋ชจํ˜ธํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์†์ ์ธ ํ•™์Šต: ์ €๋Š” ๋งค์ผ ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ํ•™์Šตํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์–ด๋–ค ํŠน์ • ์‹œ์ ์— ํ•™์Šตํ•œ ๋‚ด์šฉ์ธ์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋ชจ๋ธ์˜ ํŠน์„ฑ: ์ €๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•™์Šต๋œ ์–ธ์–ด ๋ชจ๋ธ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ธ๊ฐ„์ฒ˜๋Ÿผ ์ •ํ™•ํ•œ ์ถœ์ฒ˜๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์ธ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋Œ€์‹ , ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ณด๋ฅผ ์ฐพ์•„๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ž๋ฐ” ๊ด€๋ จ ์„œ์ : "์ž๋ฐ”์˜ ์ •์„", "Head First ์ž๋ฐ”" ๋“ฑ์˜ ์ฑ…์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•ด ๋ณด์„ธ์š”.
  • ์˜จ๋ผ์ธ ๊ฐ•์˜: ์œ ํŠœ๋ธŒ, Udemy, Coursera ๋“ฑ์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฌด๋ฃŒ ๋˜๋Š” ์œ ๋ฃŒ ์ž๋ฐ” ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ: Stack Overflow, Reddit ๋“ฑ์˜ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ "์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค", "static ๋ฉ”์†Œ๋“œ", "default ๋ฉ”์†Œ๋“œ"์™€ ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์˜๊ฒฌ์„ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณต์‹ ์ž๋ฐ” ๋ฌธ์„œ: Oracle์˜ ๊ณต์‹ ์ž๋ฐ” ๋ฌธ์„œ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ API ์„ค๋ช…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.