포슀트

Java μ œμ–΄μž

Java μ œμ–΄μž

πŸ”Ž μ ‘κ·Ό μ œμ–΄μž

μ‚¬μš©ν•˜λŠ” 이유

μ™ΈλΆ€λ‘œ λΆ€ν„° 데이터λ₯Ό λ³΄ν˜Έν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•œλ‹€. (μΊ‘μŠν™”)

λ˜ν•œ λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” 뢀뢄을 감좔기 μœ„ν•΄μ„œ μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ‚¬μš©ν•œλ‹€.


클래슀의 μ ‘κ·Ό μ œν•œ

β’ˆ pubilc

같은 νŒ¨ν‚€μ§€ 뿐만 μ•„λ‹ˆλΌ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ—μ„œλ„ μ•„λ¬΄λŸ° μ œν•œμ—†μ΄ μ‚¬μš©ν•  수 μžˆλ‹€.

라이브러리 클래슀둜 κ°œλ°œν•  κ²½μš°μ— μ‚¬μš©ν•˜λ©΄ μ’‹λ‹€.


β’‰ protected

같은 νŒ¨ν‚€μ§€ λ‚΄μ—μ„œ, 그리고 λ‹€λ₯Έ νŒ¨ν‚€μ§€μ˜ μžμ† ν΄λž˜μŠ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯


β’Š default

같은 νŒ¨ν‚€μ§€ λ‚΄μ—μ„œλ§Œ 접근이 κ°€λŠ₯


β’‹ private

같은 클래슀 λ‚΄μ—μ„œλ§Œ 접근이 κ°€λŠ₯


μ œμ–΄μž 같은 클래슀 같은 νŒ¨ν‚€μ§€ μžμ†ν΄λž˜μŠ€ 전체
public ⭕️ ⭕️ ⭕️ ⭕️
protected ⭕️ ⭕️ ⭕️ (λ‹€λ₯Έ νŒ¨ν‚€μ§€) -
default ⭕️ ⭕️ - -
private ⭕️ - - -


μƒμ„±μžμ˜ μ ‘κ·Ό μ œν•œ

객체λ₯Ό 생성할 λ•ŒλŠ” new μ—°μ‚°μžλ₯Ό ν˜ΈμΆœν•˜λŠ”λ°, μ–΄λ””μ—μ„œλ‚˜ ν˜ΈμΆœν•  수 μžˆλŠ”κ±΄ μ•„λ‹ˆλ‹€.

μƒμ„±μžλŠ” public , protected , default , private μ ‘κ·Ό μ œν•œμ„ κ°€μ§„λ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pulic class ClassName {

    // public
    public ClassName();

    // protectd
    protected ClassName();

    // default 
    ClassName();

    // private
    private ClassName();

}

클래슀 내에 μƒμ„±μžλ₯Ό μ„ μ–Έν•˜μ§€ μ•ŠμœΌλ©΄, μ»΄νŒŒμΌμ— μ˜ν•΄ μžλ™μœΌλ‘œ μƒμ„±μžλ₯Ό μƒμ„±ν•œλ‹€.

μ΄λ•Œ μƒμ„±μžμ˜ μ ‘κ·Ό μ œν•œμžλŠ” 클래슀의 μ ‘κ·Ό μ œν•œμžλ₯Ό 따라간닀.


β’ˆ public

λͺ¨λ“  νŒ¨ν‚€μ§€μ—μ„œ μ•„λ¬΄λŸ° μ œν•œ 없이 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.


β’‰ protected

default μ ‘κ·Ό μ œν•œμžμ™€ λΉ„μŠ·ν•˜λ‹€. 차이점은 λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μ†ν•œ ν΄λž˜μŠ€κ°€

ν•΄λ‹Ή 클래슀의 μžμ‹μ΄λΌλ©΄ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.


β’Š default


β’‹ private

λ™μΌν•œ νŒ¨ν‚€μ§€μ΄κ±΄, λ‹€λ₯Έ νŒ¨ν‚€μ§€μ΄κ±΄ 상관없이 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 μ—†λ‹€.

μ˜€λ‘œμ§€ 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ ν˜ΈμΆœν•  수 있고, 객체λ₯Ό 생성할 수 μžˆλ‹€.



ν•„λ“œμ™€ λ©”μ†Œλ“œ μ ‘κ·ΌκΆŒν•œμž.

μƒμ„±μž μ ‘κ·Ό μ œν•œμ˜ λ‚΄μš©κ³Ό λΉ„μŠ·ν•˜λ‹€.



πŸ”Ž μΊ‘μŠν™”μ™€ μ ‘κ·Ό μ œμ–΄μž

λ©”μ„œλ“œλ₯Ό ν†΅ν•œ κ°„μ ‘ 접근을 μœ λ„ν•΄μ•Ό ν•œλ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Time {

    private int hour;
    private int minute;
    private int second;

    public void getHour() {
        return hour;
    }

    public void setHour(int hour) {
        if (isNotValidHour(hour)) return;   // True일 경우
        this.hour = hour;                   // False일 경우
    }

    // λ§€κ°œλ³€μˆ˜λ‘œ λ„˜κ²¨μ§„ hour에 λŒ€ν•œ μœ νš¨μ„± 검사
    private boolean isNotValidHour(int hour) {
        return hour < 0 || hour > 23;
    }

}
이 κΈ°μ‚¬λŠ” μ €μž‘κΆŒμžμ˜ CC BY 4.0 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.