Amenable
Amenable's Blog
Amenable
  • λΆ„λ₯˜ 전체보기 (189)
    • πŸ“‚ JAVA (87)
      • μ΄νŽ™ν‹°λΈŒ μžλ°” (65)
      • μ£Όμš” κ°œλ… (22)
    • πŸ“‚ 개발 μ„œμ  (22)
      • μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ (1)
      • 객체지ν–₯의 사싀과 μ˜€ν•΄ (2)
      • 클린 μ½”λ“œ (8)
      • ν•¨κ»˜ 자라기 (1)
      • 그림으둜 λ°°μš°λŠ” HTTP&Network Basic (10)
    • πŸ“‚ λ°μ΄ν„°λ² μ΄μŠ€ (8)
      • κ°œλ… (8)
      • λ¬Έμ œν’€μ΄ (0)
    • πŸ“‚ λ„€νŠΈμ›Œν¬ (14)
      • κ°œλ… (6)
      • 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리 (8)
    • πŸ“‚ μŠ€ν”„λ§ (13)
      • κΈ°λ³Έ κ°œλ… (13)
    • πŸ“‚ WEB (5)
    • πŸ“‚ 자료ꡬ쑰 (12)
      • κ°œλ… (2)
      • μ •λ ¬ (8)
      • 트리 (2)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜ (10)
      • μ΅œμ†Œμ‹ μž₯트리 (2)
      • μ΅œλ‹¨ 경둜 (2)
      • λ¬Έμžμ—΄ (2)
      • ETC (4)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜_λ¬Έμ œν’€μ΄ (4)
      • BOJ_λ°±μ€€ (4)
    • πŸ“‚ ν”„λ‘œκ·Έλž˜λ° (3)
    • πŸ“‚ DevOps (2)
      • 배포 (2)
    • πŸ“‚ ν›„κΈ° (8)
      • μš°μ•„ν•œ ν…Œν¬μ½”μŠ€(ν”„λ¦¬μ½”μŠ€) (4)
      • 2023λ…„ (3)
      • 2024λ…„ (1)
    • πŸ“‚ 회고 (1)
      • 2023λ…„ (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸš€ GitHub

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Amenable

Amenable's Blog

ν†±λ ˆλ²¨ ν΄λž˜μŠ€λŠ” ν•œ νŒŒμΌμ— ν•˜λ‚˜λ§Œ λ‹΄μœΌλΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ25)]
πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

ν†±λ ˆλ²¨ ν΄λž˜μŠ€λŠ” ν•œ νŒŒμΌμ— ν•˜λ‚˜λ§Œ λ‹΄μœΌλΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ25)]

2023. 5. 8. 23:33

  μ†ŒμŠ€ νŒŒμΌμ— ν•˜λ‚˜μ— ν†±λ ˆλ²¨ 클래슀(ν†±λ ˆλ²¨ ν΄λž˜μŠ€λž€ νŒŒμΌμ— μ •μ˜λ˜μ–΄ μžˆλŠ” κ°€μž₯ λ°”κΉ₯에 μžˆλŠ” 클래슀λ₯Ό λ§ν•œλ‹€)λ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έν•˜λ”λΌλ„ μ»΄νŒŒμΌν•  λ•ŒλŠ” λ¬Έμ œκ°€ μ—†λ‹€. μœ νš¨ν•œ λ¬Έλ²•μ΄λΌλŠ” 것이닀.

  ν•˜μ§€λ§Œ 이것은 μ•„λ¬΄λŸ° 득이 μ—†μ„λΏλ”λŸ¬ μ‹¬κ°ν•œ μœ„ν—˜μ„ κ°μˆ˜ν•΄μ•Ό ν•œλ‹€. κ·Έ μ΄μœ λŠ” ν•œ μ†ŒμŠ€ νŒŒμΌμ— ν†±λ ˆλ²¨ 클래슀λ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έν•˜λ©΄ 컴파일 μˆœμ„œμ— 따라 κ²°κ³Όκ°€ λ‹¬λΌμ§ˆ 수 있기 λ•Œλ¬Έμ΄λ‹€.

  문제 상황에 λŒ€ν•œ μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ³ , 해결책을 μ•Œμ•„λ³΄λ„λ‘ ν•˜μž.

 

1. 문제점 πŸ’

  μ§‘κΈ°(Utensil)와 λ””μ €νŠΈ(Dessert) ν΄λž˜μŠ€κ°€ Utensil.javaλΌλŠ” ν•œ νŒŒμΌμ— μ •μ˜λ˜μ–΄ μžˆλ‹€κ³  ν•˜μž.

// Utensil.java

class Utensil {
    static final String NAME = "pan";
}

class Dessert {
    static final String NAME = "cake";
}

  이런 κ²½μš°μ—λŠ” μ•„λž˜ μ½”λ“œκ°€ μž‘λ™ν•˜λŠ”λ° λ¬Έμ œκ°€ μ—†λ‹€.

public class Main {
    
    public static void main(String[] args) {
        System.out.println(Utensil.NAME + Dessert.NAME); // pancake
    }
}

  ν•˜μ§€λ§Œ, Dessert.javaλΌλŠ” νŒŒμΌμ„ μ•„λž˜μ™€ 같이 λ§Œλ“€μ—ˆλ‹€κ³  ν•œλ‹€λ©΄ 컴파일 μˆœμ„œμ— λ”°λΌμ„œ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.

// Dessert.java

class Utensil {
    static final String NAME = "pan";
}

class Dessert {
    static final String NAME = "cake";
}

πŸ“˜ 1. 컴파일 μˆœμ„œ(1)

  • javac Main.java Dessert.java

  μœ„μ™€ 같은 컴파일 μˆœμ„œλΌλ©΄ μ•„μ£Ό 운이 μ’‹κ²Œλ„ 컴파일 였λ₯˜κ°€ λ°œμƒν•˜κ³  μ»΄νŒŒμΌλŸ¬κ°€ Utensilκ³Ό Dessert 클래슀λ₯Ό 쀑볡 μ •μ˜ν–ˆλ‹€κ³  μ•Œλ €μ€„ 것이닀.

  κ°€μž₯ λ¨Όμ € Main.javaλ₯Ό μ»΄νŒŒμΌν•˜κ³ , κ·Έ μ•ˆμ—μ„œ Dessert 참쑰보닀 λ¨Όμ € λ‚˜μ˜€λŠ” Utensil μ°Έμ‘°λ₯Ό λ§Œλ‚˜λ©΄ Utensil.java νŒŒμΌμ„ μ‚΄νŽ΄ Utensilκ³Ό Dessertλ₯Ό λͺ¨λ‘ μ°Ύμ•„λ‚Έλ‹€. 그리고 두 번째 λͺ…령쀄 인수둜 λ„˜μ–΄μ˜¨ Dessert.javaλ₯Ό μ²˜λ¦¬ν•˜λ €κ³  ν•  λ•Œ 같은 클래슀의 μ •μ˜κ°€ 이미 μžˆμŒμ„ μ•Œ 수 있기 λ•Œλ¬Έμ— 컴파일 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

πŸ“˜ 2. μ»΄νŒŒμΌ μˆœμ„œ(2)

  • javac Main.java

λ˜λŠ”

  • javac Main.java Utensil.java

  이런 κ²½μš°μ—λŠ” Dessert.javaλ₯Ό μ •μ˜ν•˜κΈ° 전에 μ‚΄νŽ΄λ³Έ κ²ƒμ²˜λŸΌ pancakeλ₯Ό 좜λ ₯ν•œλ‹€.

πŸ“˜ 3. μ»΄νŒŒμΌ μˆœμ„œ(3)

  • javac Dessert.java Main.java

  ν•˜μ§€λ§Œ μœ„μ™€ 같은 μˆœμ„œλ‘œ μ»΄νŒŒμΌλœλ‹€λ©΄ potpieλ₯Ό μΆœλ ₯ν•œλ‹€.

 

  즉, μ΄λ ‡κ²Œ μ–΄λŠ μ†ŒμŠ€ νŒŒμΌμ„ λ¨Όμ € μ»΄νŒŒμΌν•˜λŠλƒμ— λ”°λΌμ„œ κ²°κ³Όκ°€ λ‹¬λΌμ§„λ‹€. 

  ν†±λ ˆλ²¨ ν΄λž˜μŠ€λŠ” ν•œ νŒŒμΌμ— ν•˜λ‚˜λ§Œ λ‹΄μ•„μ•Ό ν•œλ‹€.

 

2. ν•΄κ²°μ±… πŸ’Ž

  해결책은 κ°„λ‹¨ν•˜λ‹€. ν†±λ ˆλ²¨ ν΄λž˜μŠ€λ“€(Utensilκ³Ό Dessert)을 μ„œλ‘œ λ‹€λ₯Έ μ†ŒμŠ€ 파일둜 λΆ„λ¦¬ν•˜λŠ” 것이닀.

  λ§Œμ•½ ꡳ이 μ—¬λŸ¬ ν†±λ ˆλ²¨ 클래슀λ₯Ό ν•œ νŒŒμΌμ— λ‹΄κ³  μ‹Άλ‹€λ©΄ μ•„λž˜μ™€ 같이 정적 멀버 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 κ³ λ €ν•΄ λ³Ό 수 μžˆλ‹€.

// ν†±λ ˆλ²¨ ν΄λž˜μŠ€λ“€μ„ 정적 멀버 클래슀둜 λ°”κΏ”λ³Έ λͺ¨μŠ΅
public class Test {

    public static void main(String[] args) {
        System.out.println(Utensil.NAME + Dessert.NAME);
    }

    private static class Utensil {
        static final String NAME = "pan";
    }

    private static class Dessert {
        static final String NAME = "cake";
    }
}

  λ‹€λ₯Έ ν΄λž˜μŠ€μ— λ”Έλ¦° 뢀차적인 클래슀라면 정적 멀버 클래슀둜 λ§Œλ“œλŠ” μͺ½μ΄ 일반적으둜 더 λ‚˜μ„ 것이닀. 읽기 μ’‹κ³ , private으둜 μ„ μ–Έν•˜λ©΄ μ ‘κ·Ό λ²”μœ„λ„ μ΅œμ†Œλ‘œ 관리할 수 있기 λ•Œλ¬Έμ΄λ‹€.

'πŸ“‚ JAVA > μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

비검사 κ²½κ³ λ₯Ό μ œκ±°ν•˜λΌ - [5μž₯. μ œλ„€λ¦­(μ•„μ΄ν…œ27)]  (0) 2023.05.23
둜 νƒ€μž…μ€ μ‚¬μš©ν•˜μ§€ 말라 - [5μž₯. μ œλ„€λ¦­(μ•„μ΄ν…œ26)]  (0) 2023.05.23
멀버 ν΄λž˜μŠ€λŠ” λ˜λ„λ‘ static으둜 λ§Œλ“€λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ24)]  (1) 2023.05.08
νƒœκ·Έ 달린 ν΄λž˜μŠ€λ³΄λ‹€λŠ” 클래슀 계측ꡬ쑰λ₯Ό ν™œμš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ23)]  (1) 2023.05.08
μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œλ§Œ μ‚¬μš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ22)]  (0) 2023.05.07
    'πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • 비검사 κ²½κ³ λ₯Ό μ œκ±°ν•˜λΌ - [5μž₯. μ œλ„€λ¦­(μ•„μ΄ν…œ27)]
    • 둜 νƒ€μž…μ€ μ‚¬μš©ν•˜μ§€ 말라 - [5μž₯. μ œλ„€λ¦­(μ•„μ΄ν…œ26)]
    • 멀버 ν΄λž˜μŠ€λŠ” λ˜λ„λ‘ static으둜 λ§Œλ“€λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ24)]
    • νƒœκ·Έ 달린 ν΄λž˜μŠ€λ³΄λ‹€λŠ” 클래슀 계측ꡬ쑰λ₯Ό ν™œμš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ23)]
    Amenable
    Amenable
    CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”