Java

[Java] μ ‘κ·Ό μ œν•œμžλž€ 무엇인가

hyunki.Dev 2023. 3. 8. 23:16

πŸ“Œ λ“€μ–΄κ°€λ©°...

Java 코딩을 ν•˜λ‹€λ³΄λ©΄ public, private, protected 와 같은 μ ‘κ·Ό μ œν•œμžλ“€μ„ 마주치게 λ©λ‹ˆλ‹€. 그런데 μ΄λŸ¬ν•œ μ ‘κ·Όμ œν•œμžμ˜ μ •μ˜λ‚˜ κΈ°λŠ₯을 λͺ…ν™•νžˆ μ•Œμ§€ λͺ»ν•˜κ³  λ‹¨μˆœνžˆ 'λ‹€λ₯Έ λ©”μ„œλ“œλ“€μ΄ private으둜 λ˜μ–΄ μžˆμ–΄μ„œ.. public 으둜 λ˜μ–΄ μžˆμ–΄μ„œ.. λ‚˜λ„ κ·ΈλŒ€λ‘œ public 으둜 μ„ μ–Έ 해야지' λΌλŠ” κ°€λ²Όμš΄ 마음으둜 μ‚¬μš©ν•  λ•Œκ°€ μžˆλŠ” 것 κ°™μ•„ λͺ…ν™•νžˆ μ •μ˜μ™€ κ·Έ κΈ°λŠ₯을 μ•Œμ•„λ³΄κ³ μž ν•©λ‹ˆλ‹€.

 

πŸ“Œ μ ‘κ·Ό μ œν•œμžλž€?

μ ‘κ·Ό μ œν•œμžλž€ 말 κ·ΈλŒ€λ‘œ 클래슀 및 μΈν„°νŽ˜μ΄μŠ€ 그리고 이듀이 κ°–κ³  μžˆλŠ” 멀버듀에 λŒ€ν•œ 접근을 μ œν•œν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€.

  • ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ‹€λ₯Έ νŒ¨ν‚€μ§€μ—μ„œ μ‚¬μš© λͺ»ν•˜λ„둝 막기
  • 객체 생성을 막기 μœ„ν•΄ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜μ§€ λͺ»ν•˜κ²Œ ν•˜κΈ°
  • ν•„λ“œλ‚˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•˜λ„둝 막기

와 같은 κ²½μš°μ— μ‚¬μš©λ©λ‹ˆλ‹€.

 

μ ‘κ·Ό μ œν•œμžμ˜ μ’…λ₯˜μ—λŠ” public, protected, default, private 이 있으며 κΈ°λŠ₯은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • public μ ‘κ·Ό μ œν•œμž : μ™ΈλΆ€ ν΄λž˜μŠ€κ°€ 자유둭게 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • protected μ ‘κ·Ό μ œν•œμž : 같은 νŒ¨ν‚€μ§€ λ˜λŠ” μžμ‹ ν΄λž˜μŠ€μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • default μ ‘κ·Ό μ œν•œμž : 같은 νŒ¨ν‚€μ§€μ— μ†Œμ†λœ ν΄λž˜μŠ€μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • private μ ‘κ·Ό μ œν•œμž : μ™ΈλΆ€μ—μ„œλŠ” 접근이 λΆˆκ°€ν•©λ‹ˆλ‹€. μ˜€λ‘œμ§€ 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κ³  객체λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.
μ ‘κ·Ό μ œν•œμž 같은 클래슀 같은 νŒ¨ν‚€μ§€ μžμ† 클래슀 전체 
public O O O
protected O O O  
default O O    
private O      

 

이λ₯Ό ν‘œλ‘œ λ‚˜νƒ€λ‚΄λ©΄ μœ„μ™€ κ°™μŠ΅λ‹ˆλ‹€.

 

μ—¬κΈ°μ„œ μ£Όμ˜ν•΄μ•Ό ν•  점은 ν΄λž˜μŠ€μ— λŒ€ν•œ μ ‘κ·Ό μ œν•œμ˜ 경우 λ‹€μŒκ³Ό 같이 public, default 두 개의 μ ‘κ·Ό μ œν•œμ„ κ°€μ§€κ²Œ λ©λ‹ˆλ‹€.

//default μ ‘κ·Ό μ œν•œ
class 클래슀 {...}

//public μ ‘κ·Ό μ œν•œ
public class 클래슀 {...}

 

이 μ™Έμ˜ μƒμ„±μž, ν•„λ“œμ™€ λ©”μ„œλ“œμ˜ μ ‘κ·Ό μ œν•œμ˜ 경우 public, protected, default, private λ„€ κ°€μ§€μ˜ μ ‘κ·Ό μ œν•œμ„ λͺ¨λ‘ κ°–κ²Œ λ©λ‹ˆλ‹€.

 

// μƒμ„±μžμ˜ μ ‘κ·Ό μ œν•œ
public class ExampleClass{

	//public μ ‘κ·Ό μ œν•œ
    public ExampleClass(...){...}
    
    //protected μ ‘κ·Ό μ œν•œ
    protected ExampleClass(...){...}
    
    //default μ ‘κ·Ό μ œν•œ
    ExampleClass(...){...}
    
    //private μ ‘κ·Ό μ œν•œ
	private ExampleClass(...){...}

}


//ν•„λ“œμ™€ λ©”μ†Œλ“œμ˜ μ ‘κ·Ό μ œν•œ

//ν•„λ“œ μ„ μ–Έ
[public | protected | private] [static] νƒ€μž… ν•„λ“œ;

//λ©”μ†Œλ“œ μ„ μ–Έ
[public | protected | private][static] 리턴 νƒ€μž… λ©”μ†Œλ“œ(...){...}

 

 

μ°Έκ³  : μ±… - 혼자 κ³΅λΆ€ν•˜λŠ” μžλ°”