Item 16. Accessor Method

public ν΄λž˜μŠ€μ—μ„œλŠ” public ν•„λ“œκ°€ μ•„λ‹Œ μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λΌ

  • μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ€ 클래슀


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

μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ€ ν΄λž˜μŠ€λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•„λ“œμ— 직접 μ ‘κ·Όν•  수 μžˆμ–΄ μΊ‘μŠν™”μ˜ 이점을 μ œκ³΅ν•˜μ§€ λͺ»ν•œλ‹€. java.awt.package의 Point와 Dimension ν΄λž˜μŠ€κ°€ μ΄λ ‡κ²Œ μž‘μ„±λ˜μ—ˆλŠ”λ°, μ—¬μ „νžˆ μ„±λŠ₯ 문제λ₯Ό μΌμœΌν‚€λŠ” μ•ˆ 쒋은 μ˜ˆμ΄λ‹€.

λ§Œμ•½ λΆˆλ³€μœΌλ‘œ μ„ μ–Έλ˜μ—ˆμœΌλ©΄ κ·Έλ‚˜λ§ˆ λ‚«μ§€λ§Œ, APIλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³ λŠ” λ‚΄λΆ€ ν‘œν˜„μ„ λ°”κΏ€ 수 μ—†λŠ” 단점이 μ—¬μ „νžˆ μ‘΄μž¬ν•œλ‹€.

  • μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œ 클래슀

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 ν΄λž˜μŠ€κ°€ μ•„λ‹Œ package-private 클래슀 ν˜Ήμ€ private 쀑첩 클래슀

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

ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œ λ©΄μ—μ„œ μ ‘κ·Όμž 방식보닀 κΉ”λ”ν•˜κ²Œ μ‚¬μš©ν•  수 있으며, ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œκ°€ ν•΄λ‹Ή 클래슀(public ν•„λ“œλ‘œ 열어놓은)의 λ‚΄λΆ€ ν‘œν˜„μ— λ¬Άμ΄κΈ°λŠ” ν•˜μ§€λ§Œ, 이 ν΄λΌμ΄μ–ΈνŠΈ ν΄λž˜μŠ€λ„ νŒ¨ν‚€μ§€ μ•ˆμ—μ„œλ§Œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— νŒ¨ν‚€μ§€ λ°”κΉ₯ μ½”λ“œμ—λŠ” 영ν–₯을 μ£Όμ§€ μ•ŠλŠ”λ‹€.

Last updated

Was this helpful?