πŸ’»

Java ν”„λ‘œκ·Έλž˜λ° - κ°μ²΄νƒ€μž…ν™•μΈ(instanceof), 싱글톀 ν•¨μˆ˜(Singleton) λ³Έλ¬Έ

KITRI/JAVA

Java ν”„λ‘œκ·Έλž˜λ° - κ°μ²΄νƒ€μž…ν™•μΈ(instanceof), 싱글톀 ν•¨μˆ˜(Singleton)

λ˜νš¨λ‹ˆ 2020. 5. 11. 14:57

객체 νƒ€μž… 확인(instanceof)

 

κ°•μ œ νƒ€μž… λ³€ν™˜μ€ μžμ‹ νƒ€μž…μ΄ λΆ€λͺ¨ νƒ€μž…μœΌλ‘œ λ³€ν™˜λ˜μ–΄ μžˆλŠ” μƒνƒœμ—μ„œλ§Œ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— λ‹€μŒκ³Ό 같이 λΆ€λͺ¨ νƒ€μž…μ˜ λ³€μˆ˜κ°€ λΆ€λͺ¨ 객체λ₯Ό μ°Έμ‘°ν•  경우 μžμ‹ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•  수 μ—†λ‹€.

 

Parent parent = new Parent();
Child child = (Child) Parent;  //κ°•μ œ νƒ€μž… λ³€ν™˜μ„ ν•  수 μ—†λ‹€. 

Parent parent = new Child();  //upCasting
Child child = (Child) Parent; //κ°•μ œ νƒ€μž… λ³€ν™˜μ„ ν•  수 μžˆλ‹€. downCasting

 

κ·Έλ ‡λ‹€λ©΄ λΆ€λͺ¨ λ³€μˆ˜κ°€ μ°Έμ‘°ν•˜λŠ” 객체가 λΆ€λͺ¨ 객체인지 μžμ‹ 객체인지 μ–΄λ–»κ²Œ ν™•μΈν• κΉŒ?

μ–΄λ–€ 객체가 μ–΄λ–€ 클래슀의 μΈμŠ€ν„΄μŠ€μΈμ§€ ν™•μΈν•˜λ €λ©΄ instanceof μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. 

 

shape λ§€κ°œλ³€μˆ˜κ°€ μ°Έμ‘°ν•˜λŠ” 객체가 Line인지 

shape λ§€κ°œλ³€μˆ˜κ°€ μ°Έμ‘°ν•˜λŠ” 객체가 Line인지, 즉 Line νƒ€μž…μœΌλ‘œ λ³€ν™˜μ΄ κ°€λŠ₯ν•œμ§€ ν™•μΈν•˜μ—¬ κ°•μ œ νƒ€μž… λ³€ν™˜μ„ ν•΄μ€€λ‹€. 

 

μ •λ¦¬ν•˜μžλ©΄, κ°•μ œ νƒ€μž… λ³€ν™˜μ„ ν•˜κΈ° 전에 instanceof μ—°μ‚°μžλ‘œ λ³€ν™˜μ‹œν‚¬ νƒ€μž…μ˜ 객체인지 μ‘°μ‚¬ν•΄μ„œ 잘λͺ»λœ λ§€κ°œκ°’μœΌλ‘œ 인해 ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜λŠ” 것을 λ§‰μ•„μ•Όν•œλ‹€. 

 

 

 

 

 

싱글톀(Singleton)

 

μƒμ„±μžκ°€ μ—¬λŸ¬ μ°¨λ‘€ ν˜ΈμΆœλ˜λ”λΌλ„ μ‹€μ œλ‘œ μƒμ„±λ˜λŠ” κ°μ²΄λŠ” ν•˜λ‚˜μ΄κ³  졜초 생성 이후에 호좜된 μƒμ„±μžλŠ” 졜초의 μƒμ„±μžκ°€ μƒμ„±ν•œ 객체λ₯Ό λ¦¬ν„΄ν•œλ‹€. 

 

λ©”μ„œλ“œμ™€ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ λͺ¨λ‘ static으둜 μ„ μ–Έν•œλ‹€.

 

κΈ°λ³Έμƒμ„±μžλ₯Ό private λ₯Ό μ‚¬μš©ν•˜μ—¬ 생성을 λΆˆκ°€λŠ₯ν•˜κ²Œ ν•˜κ³  getInstanceλ₯Ό ν†΅ν•΄μ„œλ§Œ 생성이 κ°€λŠ₯ν•˜λ‹€. getInstanceλŠ” λ‚΄λΆ€μ μœΌλ‘œ μƒμ„±λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ μƒμ„±ν•˜κ³ , 기쑴에 μƒμ„±λœ 값이 μ‘΄μž¬ν•œλ‹€λ©΄ μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν˜•νƒœλ‘œ ν”„λ‘œκ·Έλž¨ μ „λ°˜μ— 걸쳐 ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μœ μ§€ν•œλ‹€.

 

μ‹€ν–‰ν™”λ©΄

 

 

 

λ°˜μ‘ν˜•
Comments