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

public ν΄λž˜μŠ€μ—μ„œλŠ” public ν•„λ“œκ°€ μ•„λ‹Œ μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ16)]
πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

public ν΄λž˜μŠ€μ—μ„œλŠ” public ν•„λ“œκ°€ μ•„λ‹Œ μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ16)]

2023. 4. 24. 20:25

  제λͺ©μ—μ„œμ™€ 같이 public 클래슀λ₯Ό μ‚¬μš©ν•  경우 public ν•„λ“œκ°€ μ•„λ‹Œ μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ν•˜κ³  μžˆλ‹€.

 

1. public ν΄λž˜μŠ€μ—μ„œ public ν•„λ“œλ₯Ό μ‚¬μš©ν–ˆμ„ 경우의 문제점 πŸ₯ž

public class Point {
    public double x;
    public double y;
}

  μœ„μ™€ 같은 ν΄λž˜μŠ€λŠ” 데이터 ν•„λ“œμ— 직접 μ ‘κ·Όν•  수 μžˆμœΌλ―€λ‘œ μΊ‘μŠν™”μ˜ 이점을 μ œκ³΅ν•˜μ§€ λͺ»ν•œλ‹€. 그에 λ”°λΌμ„œ λ‹€μŒκ³Ό 같은 λ¬Έμ œμ μ„ κ°€μ§€κ²Œ λœλ‹€.

  • APIλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ λŠ” λ‚΄λΆ€ ν‘œν˜„을 λ°”κΏ€ μˆ˜ μ—†λ‹€.
  • λΆˆλ³€μ‹μ„ λ³΄μž₯ν•  μˆ˜ μ—†λ‹€.
  • μ™ΈλΆ€μ—μ„œ ν•„λ“œμ— μ ‘κ·Όν•  λ•Œ λΆ€μˆ˜ μž‘업을 μˆ˜ν–‰ν•  μˆ˜ μ—†λ‹€.

 

2. public ν΄λž˜μŠ€μ—μ„œ μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν–ˆμ„ 경우의 이점 πŸ§‡

public class Point {
    private double x;
    private double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double getX() { return x; }

    public void setX(double x) { this.x = x; }

    public double getY() { return y; }

    public void setY(double y) { this.y = y; }
}

  μœ„μ™€ 같이 μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ•„λž˜μ™€ 같은 이점이 μžˆλ‹€.

  • λ‚΄λΆ€ ν‘œν˜„ λ°©μ‹μ„ μ–Έμ œλ“  λ°”κΏ€ μˆ˜ μžˆλŠ” μœ μ—°μ„±μ„ μ–»μ„ μˆ˜ μžˆλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” public λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œλ§Œ λ°μ΄ν„° μ ‘근이 κ°€λŠ₯ν•˜λ‹€.
  • μ™ΈλΆ€μ—μ„œ ν•„λ“œμ— μ ‘κ·Όν•  λ•Œ λΆ€μˆ˜ μž‘업을 μˆ˜ν–‰ν•  μˆ˜ μžˆλ‹€.

 

3. package-private 클래슀 & private 쀑첩 클래슀 🍞

  μ±…μ—μ„œλŠ” package-private 클래슀 ν˜Ήμ€ private 쀑첩 클래슀라면 데이터 ν•„λ“œλ₯Ό λ…ΈμΆœν•œλ‹€ 해도 ν•˜λ“±μ˜ λ¬Έμ œκ°€ μ—†λ‹€κ³  λ§ν•˜κ³  μžˆλ‹€. 단, κ·Έ ν΄λž˜μŠ€κ°€ ν‘œν˜„ν•˜λ €λŠ” 좔상 κ°œλ…μ€ μ˜¬λ°”λ₯΄κ²Œ ν‘œν˜„ν•΄μ€˜μ•Ό ν•œλ‹€κ³  ν•œλ‹€.

  별 λ‹€λ₯Έ λ¬Έμ œκ°€ μ—†λ‹€κ³  ν•˜λŠ” μ΄μœ λŠ” μ•„λž˜μ™€ κ°™λ‹€.

  • 클래슀 μ„ μ–Έ λ©΄μ—μ„œλ‚˜ μ΄λ₯Ό μ‚¬μš©ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œ λ©΄μ—μ„œλ‚˜ μ ‘κ·Όμž λ°©μ‹λ³΄λ‹€ ν›¨μ”¬ κΉ”λ”ν•˜λ‹€.
  • 클래슀λ₯Ό ν¬ν•¨ν•˜λŠ” νŒ¨ν‚€μ§€ μ•ˆμ—μ„œλ§Œ λ™μž‘ν•˜λŠ” μ½”λ“œμΌ λΏμ΄λ‹€.
  • νŒ¨ν‚€μ§€ λ°”κΉ₯ μ½”λ“œλ₯Ό μ „ν˜€ μ†λŒ€μ§€ μ•Šκ³  λ°μ΄ν„° ν‘œν˜„ λ°©μ‹μ„ λ°”κΏ€ μˆ˜ μžˆλ‹€.
  • private μ€‘첩 ν΄λž˜μŠ€μ˜ κ²½μš°λΌλ©΄ μˆ˜μ • λ²”μœ„κ°€ λ” μ’μ•„μ Έμ„œ μ΄ ν΄λž˜μŠ€λ₯Ό ν¬ν•¨ν•˜λŠ” μ™ΈλΆ€ ν΄λž˜μŠ€κΉŒμ§€λ‘œ μ œν•œλœλ‹€.

 

4. public 클래슀의 ν•„λ“œκ°€ λΆˆλ³€μΌ 경우 πŸ₯

public final class Time {
    private static final int HOURS_PER_DAY = 24;
    private static final int MINUTES_PER_HOUR = 60;

    public final int hour;
    public final int minute;

    public Time(int hour, int minute) {
        if(hour < 0 || hour >= HOURS_PER_DAY)
            throw new IllegalArgumentException("μ‹œκ°„: " + hour);
        if(minute < 0 || minute >= MINUTES_PER_HOUR)
            throw new IllegalArgumentException("λΆ„: " + minute);
        this.hour = hour;
        this.minute = minute;
    }
}

  public 클래슀의 ν•„λ“œκ°€ λΆˆλ³€μ΄λ©΄ λΆˆλ³€μ‹μ„ 보μž₯ν•  μˆ˜λŠ” μžˆμ§€λ§Œ APIλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³ λŠ” ν‘œν˜„ 방식을 λ°”κΏ€ 수 μ—†κ³ , ν•„λ“œλ₯Ό 읽을 λ•Œ λΆ€μˆ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μ—†λ‹€λŠ” 단점은 μ—¬μ „ν•˜λ‹€.

 

5. κ²°λ‘  πŸ₯―

  public ν΄λž˜μŠ€λŠ” μ ˆλŒ€ κ°€λ³€ ν•„λ“œλ₯Ό 직접 λ…ΈμΆœν•΄μ„œλŠ” μ•ˆ λœλ‹€. λΆˆλ³€ ν•„λ“œλΌλ©΄ λ…ΈμΆœν•΄λ„ λœ μœ„ν—˜ν•˜μ§€λ§Œ μ™„μ „νžˆ μ•ˆμ‹¬ν•  μˆ˜ μ—†λ‹€.

  ν•˜μ§€λ§Œ package-private ν΄λž˜μŠ€λ‚˜ private 쀑첩 ν΄λž˜μŠ€μ—μ„œλŠ” μ’…μ’… (λΆˆλ³€μ΄λ“  가변이든) ν•„λ“œλ₯Ό λ…ΈμΆœν•˜λŠ” 편이 λ‚˜μ„ λ•Œλ„ μžˆλ‹€.

 

ν•΄λ‹Ή 글은 λ°±κΈ°μ„  λ‹˜μ˜ 'μ΄νŽ™ν‹°λΈŒ μžλ°” μ™„λ²½ 곡랡'을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

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

λ³€κ²½ κ°€λŠ₯성을 μ΅œμ†Œν™”ν•˜λΌ(λΆˆλ³€ 클래슀의 μž₯점, 단점, 단점 λŒ€μ²˜ 방법)(2) - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ17)]  (0) 2023.04.27
λ³€κ²½ κ°€λŠ₯성을 μ΅œμ†Œν™”ν•˜λΌ(λΆˆλ³€ 클래슀λ₯Ό λ§Œλ“œλŠ” λ‹€μ„― κ°€μ§€ κ·œμΉ™)(1) - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ17)]  (0) 2023.04.27
ν΄λž˜μŠ€μ™€ λ©€λ²„μ˜ μ ‘κ·Ό κΆŒν•œμ„ μ΅œμ†Œν™”ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ15)]  (0) 2023.04.12
Comparable을 κ΅¬ν˜„ν• μ§€ κ³ λ €ν•˜λΌ - [3μž₯. λͺ¨λ“  객체의 곡톡 λ©”μ„œλ“œ(μ•„μ΄ν…œ14)]  (0) 2023.04.11
clone μž¬μ •μ˜λŠ” μ£Όμ˜ν•΄μ„œ μ§„ν–‰ν•˜λΌ(2) - [3μž₯. λͺ¨λ“  객체의 곡톡 λ©”μ„œλ“œ(μ•„μ΄ν…œ13)]  (0) 2023.04.09
    'πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • λ³€κ²½ κ°€λŠ₯성을 μ΅œμ†Œν™”ν•˜λΌ(λΆˆλ³€ 클래슀의 μž₯점, 단점, 단점 λŒ€μ²˜ 방법)(2) - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ17)]
    • λ³€κ²½ κ°€λŠ₯성을 μ΅œμ†Œν™”ν•˜λΌ(λΆˆλ³€ 클래슀λ₯Ό λ§Œλ“œλŠ” λ‹€μ„― κ°€μ§€ κ·œμΉ™)(1) - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ17)]
    • ν΄λž˜μŠ€μ™€ λ©€λ²„μ˜ μ ‘κ·Ό κΆŒν•œμ„ μ΅œμ†Œν™”ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ15)]
    • Comparable을 κ΅¬ν˜„ν• μ§€ κ³ λ €ν•˜λΌ - [3μž₯. λͺ¨λ“  객체의 곡톡 λ©”μ„œλ“œ(μ•„μ΄ν…œ14)]
    Amenable
    Amenable
    CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

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