πŸ“‚ JAVA

    ν˜•λ³€ν™˜(μΊμŠ€νŒ…, Casting) - μ—…μΊμŠ€νŒ…(Up-Casting), λ‹€μš΄μΊμŠ€νŒ…(Down-Casting)

    1. ν˜•λ³€ν™˜(μΊμŠ€νŒ…) κ°œλ… 🦏 ν˜•λ³€ν™˜(μΊμŠ€νŒ…)μ΄λž€ λ³€μˆ˜ λ˜λŠ” μƒμˆ˜μ˜ νƒ€μž…μ„ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것을 λ§ν•œλ‹€. κΈ°λ³Έν˜•(Primitive Type)μ—μ„œλŠ” boolean을 μ œμ™Έν•œ λ‚˜λ¨Έμ§€ νƒ€μž…λ“€μ€ μ„œλ‘œ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€. μ°Έμ‘°ν˜•(Reference Type)μ—μ„œλŠ” μ„œλ‘œ 상속관계가 μžˆλŠ” 클래슀 μ‚¬μ΄μ—μ„œλ§Œ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€. μžμ†νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ₯Ό μ‘°μƒνƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ, μ‘°μƒνƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ₯Ό μžμ†νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ ν˜•λ³€ν™˜μ„ ν•˜λŠ” 것이닀. 이 κΈ€μ—μ„œλŠ” κΈ°λ³Έν˜•μ˜ ν˜•λ³€ν™˜λ³΄λ‹€λŠ” μ°Έμ‘°ν˜•μ˜ ν˜•λ³€ν™˜μ— μ΄ˆμ μ„ λ§žμΆ”λ„λ‘ ν•œλ‹€. μ°Έμ‘°ν˜• μΊμŠ€νŒ…μ€ 2κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. 1. μ—…μΊμŠ€νŒ…(Up-Casting) μžμ†νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ₯Ό μ‘°μƒνƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ λ³€ν™˜ν•˜λŠ” 것 μ—…μΊμŠ€νŒ…μ„ ν•˜λ©΄ 상속받은 μ„œλΈŒ ν΄λž˜μŠ€μ— 상관없이 ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€λ‘œ λ¬Άμ–΄μ„œ κ΄€..

    비검사 κ²½κ³ λ₯Ό μ œκ±°ν•˜λΌ - [5μž₯. μ œλ„€λ¦­(μ•„μ΄ν…œ27)]

    1. 비검사 κ²½κ³  κ°œλ… 🦜 '비검사(unchecked) κ²½κ³ 'λž€ μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž… μ•ˆμ „μ„±μ„ ν™•μΈν•˜λŠ”λ° ν•„μš”ν•œ 정보가 μΆ©λΆ„ν•˜μ§€ μ•Šμ„ λ•Œ λ°œμƒμ‹œν‚€λŠ” 경고이닀. 비검사 경고의 μ˜ˆμ‹œ 쀑에 ν•˜λ‚˜λ‘œ λ‹€μŒκ³Ό 같이 둜 νƒ€μž…μ„ μ‚¬μš©ν•˜λŠ” 경우λ₯Ό λ“€ 수 μžˆλ‹€. public static void main(String[] args) { // 비검사 κ²½κ³  λ°œμƒ // Raw use of parameterized class 'Set' Set names = new HashSet(); // 비검사 κ²½κ³  λ°œμƒ // Raw use of parameterized class 'HashSet' Set strings = new HashSet(); } 2. 비검사 κ²½κ³ λ₯Ό μ œκ±°ν•΄μ•Ό ν•˜λŠ” 이유 🦚 이번 μ•„μ΄ν…œμ—μ„œλŠ” '비검사 κ²½κ³ λ₯Ό μ œκ±°ν•˜λΌ'라고 λ§ν•˜κ³  ..

    둜 νƒ€μž…μ€ μ‚¬μš©ν•˜μ§€ 말라 - [5μž₯. μ œλ„€λ¦­(μ•„μ΄ν…œ26)]

    이번 μž₯(5μž₯)λΆ€ν„°λŠ” μ œλ„€λ¦­μ„ 닀룬닀. ν˜Ήμ‹œλ‚˜ μ œλ„€λ¦­μ— λŒ€ν•œ κΈ°λ³Έ κ°œλ…μ΄ ν•„μš”ν•˜λ‹€λ©΄ 이전 글을 λ¨Όμ € 보고 μ˜€λ„λ‘ ν•˜μž. 1. 둜 νƒ€μž… (Raw Type) κ°œλ… πŸ’½ 둜 νƒ€μž…μ΄λž€ μ œλ„€λ¦­ νƒ€μž…μ—μ„œ νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό μ „ν˜€ μ‚¬μš©ν•˜μ§€ μ•Šμ„ λ•Œλ₯Ό λ§ν•œλ‹€. 예λ₯Ό λ“€μ–΄ List의 둜 νƒ€μž…μ€ Listλ‹€. 2. 둜 νƒ€μž…μ„ μ‚¬μš©ν•˜λ©΄ μ•ˆ λ˜λŠ” 이유 πŸ’Ύ μ œλ„€λ¦­μ΄ μ•ˆκ²¨μ£ΌλŠ” μ•ˆμ „μ„±κ³Ό ν‘œν˜„λ ₯을 κ³ λ €ν•  λ•Œ 둜 νƒ€μž…μ€ μ ˆλŒ€λ‘œ μ¨μ„œλŠ” μ•ˆ λœλ‹€. 둜 νƒ€μž…μ„ μ‚¬μš©ν•˜λŠ” μ½”λ“œ(= μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ½”λ“œ)와 둜 νƒ€μž…μ„ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ½”λ“œ(= μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λŠ” μ½”λ“œ)λ₯Ό 비ꡐ해 보자. πŸ“’ 1. 둜 νƒ€μž…μ„ μ‚¬μš©ν•˜λŠ” 경우 기본적인 λ™μž‘μ€ numbers에 숫자λ₯Ό λ„£κ³  λ°˜λ³΅λ¬Έμ„ 톡해 λ“€μ–΄κ°„ 숫자λ₯Ό ν™•μΈν•˜λ €κ³  ν•˜λŠ” μ½”λ“œλ‹€. μˆ«μžκ°€ λ“€μ–΄κ°€μ•Ό ν•˜μ§€λ§Œ λ¬Έμžμ—΄μ΄ ..

    μ œλ„€λ¦­(Generics) - κΈ°λ³Έ κ°œλ…

    JDK 1.5λΆ€ν„° λ„μž…λœ μ œλ„€λ¦­(Generics)에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. 'μ œλ„€λ¦­(Generic)을 μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ νƒ€μž…μ„ μ‚¬μš©ν•  수 μžˆλ‹€.' μ •λ„λ‘œλ§Œ μ•Œκ³  μžˆμ—ˆλŠ”λ° μ œλŒ€λ‘œ κ³΅λΆ€ν•˜λ €κ³  λ³΄λ‹ˆκΉ 생각보닀 양이 λ§Žλ‹€. 쫌 많이 λ§Žλ‹€... κ·Έλž˜μ„œ 이번 κΈ€μ—μ„œλŠ” μ œλ„€λ¦­μ˜ 기번 κ°œλ…μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ³  λ‹€μŒ 글듀을 톡해 더 ꡬ체적으둜 μ•Œμ•„λ³΄λŠ” κ²ƒμœΌλ‘œ ν•˜μž. (μ΄νŽ™ν‹°λΈŒ μžλ°” 5μž₯의 μ œλ„€λ¦­(μ•„μ΄ν…œ 26 ~ μ•„μ΄ν…œ 33) λ‚΄μš©κ³Ό μ™€μΌλ“œμΉ΄λ“œ λ“±μ˜ λ‚΄μš©μ„ μΆ”κ°€μ μœΌλ‘œ λ‹€λ£° μ˜ˆμ •μ΄λ‹€.) (μ΄νŽ™ν‹°λΈŒ μžλ°” 5μž₯ μ œλ„€λ¦­ 파트λ₯Ό μ½μœΌλ €λŠ”λ° 이해가 잘 λ˜μ§€ μ•Šμ•„μ„œ μ œλ„€λ¦­μ˜ κΈ°λ³ΈλΆ€ν„° λΈ”λ‘œκΉ…ν•˜κ³  μžˆλŠ” 쀑이닀...πŸ˜…) 1. μ œλ„€λ¦­(Generic) κ°œλ… 🧱 μš°λ¦¬λŠ” μ œλ„€λ¦­(Generics)을 κ·Έ μ–΄λ– ν•œ κ°œλ…λ³΄λ‹€ 자주 μ‚¬μš©ν•œλ‹€. public stati..

    래퍼 클래슀 (Wrapper Class)

    1. κ°œλ… 🚢‍♀️ 일반적으둜 객체지ν–₯ κ°œλ…μ—μ„œ λͺ¨λ“  것은 객체둜 닀루어져야 ν•œλ‹€. ν•˜μ§€λ§Œ μžλ°”μ—μ„œ 8개의 κΈ°λ³Έν˜•(boolean, char, byte, short, int, long, float, double)은 객체둜 닀루어지지 μ•ŠλŠ”λ‹€. μžλ°”κ°€ μ™„μ „ν•œ 객체 지ν–₯ μ–Έμ–΄κ°€ μ•„λ‹ˆλΌλŠ” 이야기λ₯Ό λ“£μ§€λ§Œ, 보닀 높은 μ„±λŠ₯을 얻을 수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€ 보면 κΈ°λ³Έν˜•(Primitive Type) λ³€μˆ˜λ„ μ–΄μ©” 수 없이 객체둜 닀뀄야 ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 예λ₯Ό λ“€λ©΄, λ§€κ°œλ³€μˆ˜λ‘œ 객체λ₯Ό μš”κ΅¬ν•  λ•Œ, κΈ°λ³Έν˜• 값이 μ•„λ‹Œ 객체둜 μ €μž₯ν•΄μ•Ό ν•  λ•Œ, 객체 κ°„μ˜ 비ꡐ가 ν•„μš”ν•  λ•Œ λ“±λ“±μ˜ κ²½μš°μ—λŠ” κΈ°λ³Έν˜• 값듀을 객체둜 λ³€ν™˜ν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€. 이럴 λ•Œ 래퍼 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 각각의 νƒ€μž…μ— ν•΄λ‹Ήν•˜λŠ” 데이터λ₯Ό 인..

    ν†±λ ˆλ²¨ ν΄λž˜μŠ€λŠ” ν•œ νŒŒμΌμ— ν•˜λ‚˜λ§Œ λ‹΄μœΌλΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ25)]

    μ†ŒμŠ€ νŒŒμΌμ— ν•˜λ‚˜μ— ν†±λ ˆλ²¨ 클래슀(ν†±λ ˆλ²¨ ν΄λž˜μŠ€λž€ νŒŒμΌμ— μ •μ˜λ˜μ–΄ μžˆλŠ” κ°€μž₯ λ°”κΉ₯에 μžˆλŠ” 클래슀λ₯Ό λ§ν•œλ‹€)λ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έν•˜λ”λΌλ„ μ»΄νŒŒμΌν•  λ•ŒλŠ” λ¬Έμ œκ°€ μ—†λ‹€. μœ νš¨ν•œ λ¬Έλ²•μ΄λΌλŠ” 것이닀. ν•˜μ§€λ§Œ 이것은 μ•„λ¬΄λŸ° 득이 μ—†μ„λΏλ”λŸ¬ μ‹¬κ°ν•œ μœ„ν—˜μ„ κ°μˆ˜ν•΄μ•Ό ν•œλ‹€. κ·Έ μ΄μœ λŠ” ν•œ μ†ŒμŠ€ νŒŒμΌμ— ν†±λ ˆλ²¨ 클래슀λ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έν•˜λ©΄ 컴파일 μˆœμ„œμ— 따라 κ²°κ³Όκ°€ λ‹¬λΌμ§ˆ 수 있기 λ•Œλ¬Έμ΄λ‹€. 문제 상황에 λŒ€ν•œ μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ³ , 해결책을 μ•Œμ•„λ³΄λ„λ‘ ν•˜μž. 1. 문제점 πŸ’ 집기(Utensil)와 λ””μ €νŠΈ(Dessert) ν΄λž˜μŠ€κ°€ Utensil.javaλΌλŠ” ν•œ νŒŒμΌμ— μ •μ˜λ˜μ–΄ μžˆλ‹€κ³  ν•˜μž. // Utensil.java class Utensil { static final String NAME = "pan"; } class Dessert {..

    멀버 ν΄λž˜μŠ€λŠ” λ˜λ„λ‘ static으둜 λ§Œλ“€λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ24)]

    쀑첩 클래슀(nested class)λž€ λ‹€λ₯Έ 클래슀 μ•ˆμ— μ •μ˜λœ 클래슀λ₯Ό λ§ν•œλ‹€. 쀑첩 ν΄λž˜μŠ€λŠ” μžμ‹ μ„ 감싼 λ°”κΉ₯ ν΄λž˜μŠ€μ—μ„œλ§Œ μ“°μ—¬μ•Ό ν•˜λ©°, κ·Έ μ™Έμ˜ μ“°μž„μƒˆκ°€ μžˆλ‹€λ©΄ ν†±λ ˆλ²¨ 클래슀둜 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€. 쀑첩 클래슀의 μ’…λ₯˜λŠ” μ•„λž˜μ˜ 4가지가 μžˆλ‹€. 정적 멀버 클래슀 (비정적) 멀버 클래슀 읡λͺ… 클래슀 지역 클래슀 '정적 멀버 클래슀'λ₯Ό μ œμ™Έν•˜κ³ λŠ” λͺ¨λ‘ λ‚΄λΆ€ 클래슀(inner class)에 ν•΄λ‹Ήν•œλ‹€. '정적 멀버 클래슀'와 '비정적 멀버 클래슀'λŠ” 멀버 ν΄λž˜μŠ€μ— ν•΄λ‹Ήν•œλ‹€. 이번 글을 톡해 4가지 쀑첩 ν΄λž˜μŠ€μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ³ , μ™œ 멀버 ν΄λž˜μŠ€λŠ” λ˜λ„λ‘ static으둜 λ§Œλ“€μ–΄μ•Ό ν•˜λŠ”μ§€ μ•Œμ•„λ³΄κ³ μž ν•œλ‹€. 1. 정적 멀버 클래슀 🧰 정적 멀버 ν΄λž˜μŠ€λŠ” λ‹€λ₯Έ 클래슀 μ•ˆμ— μ„ μ–Έλ˜κ³ , λ°”κΉ₯ 클래슀의 private 멀버에도..

    νƒœκ·Έ 달린 ν΄λž˜μŠ€λ³΄λ‹€λŠ” 클래슀 계측ꡬ쑰λ₯Ό ν™œμš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ23)]

    1. νƒœκ·Έ 달린 클래슀 🎧 νƒœκ·Έ 달린 ν΄λž˜μŠ€λž€ 두 가지 μ΄μƒμ˜ 의미λ₯Ό ν‘œν˜„ν•  수 있으며, 그쀑 ν˜„μž¬ ν‘œν˜„ν•˜λŠ” 의미λ₯Ό νƒœκ·Έ κ°’μœΌλ‘œ μ•Œλ €μ£ΌλŠ” 클래슀λ₯Ό λ§ν•œλ‹€. μ•„λž˜ μ½”λ“œλŠ” 원과 μ‚¬κ°ν˜•μ„ ν‘œν˜„ν•  수 μžˆλŠ” νƒœκ·Έ 달린 ν΄λž˜μŠ€μ΄λ‹€. public class Figure { enum Shape {RECTANGLE, CIRCLE}; // νƒœκ·Έ ν•„λ“œ - ν˜„μž¬ λͺ¨μ–‘을 λ‚˜νƒ€λ‚Έλ‹€. final Shape shape; // λ‹€μŒ ν•„λ“œλ“€μ€ λͺ¨μ–‘이 μ‚¬κ°ν˜•(RECTANGLE)일 λ•Œλ§Œ 쓰인닀. double length; double width; // λ‹€μŒ ν•„λ“œλŠ” λͺ¨μ–‘이 원(CIRCLE)일 λ•Œλ§Œ 쓰인닀. double radius; // μ›μš© μƒμ„±μž Figure2(double radius){ shape = Shape.CIRCLE; this...

    μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œλ§Œ μ‚¬μš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ22)]

    1. μΈν„°νŽ˜μ΄μŠ€μ˜ μ—­ν•  🐣 μΈν„°νŽ˜μ΄μŠ€λŠ” μžμ‹ μ„ κ΅¬ν˜„ν•œ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” νƒ€μž… 역할을 ν•œλ‹€. ν΄λž˜μŠ€κ°€ μ–΄λ–€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€λŠ” 것은 μžμ‹ μ˜ μΈμŠ€ν„΄μŠ€λ‘œ 무엇을 ν•  수 μžˆλŠ”μ§€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— μ–˜κΈ°ν•΄ μ£ΌλŠ” 것이닀. μΈν„°νŽ˜μ΄μŠ€λŠ” 였직 이 μš©λ„λ‘œλ§Œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. (λ°‘μ—μ„œ μ‚΄νŽ΄λ³Ό κ²ƒμ΄μ§€λ§Œ μƒμˆ˜ 곡개용 μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©ν•˜μ§€ 말아야 ν•œλ‹€.) 2. μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€ μ•ˆν‹°νŒ¨ν„΄ πŸ₯ μœ„μ—μ„œ λ§ν•œ μΈν„°νŽ˜μ΄μŠ€μ˜ 역할에 λ§žμ§€ μ•ŠλŠ” 예둜 μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λΌλŠ” 것이 μžˆλ‹€. μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λž€ λ©”μ„œλ“œ 없이, μƒμˆ˜λ₯Ό λœ»ν•˜λŠ” static final ν•„λ“œλ‘œλ§Œ 가득 μ°¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§ν•œλ‹€. public interface PhysicalConstants { // μ•„λ³΄κ°€λ“œλ‘œ 수 (1/λͺ°) static final double AVOGAD..

    μΈν„°νŽ˜μ΄μŠ€λŠ” κ΅¬ν˜„ν•˜λŠ” μͺ½μ„ 생각해 μ„€κ³„ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ21)]

    1. κ°œλ… πŸ‘» λ””ν΄νŠΈ λ©”μ„œλ“œλ₯Ό μ„ μ–Έν•˜λ©΄, κ·Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ ν›„ λ””ν΄νŠΈ λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜μ§€ μ•Šμ€ λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ λ””ν΄νŠΈ κ΅¬ν˜„μ΄ μ“°μ΄κ²Œ λœλ‹€. κΈ°μ‘΄ μΈν„°νŽ˜μ΄μŠ€μ— λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜λŠ” 길이 μ—΄λ Έμ§€λ§Œ λͺ¨λ“  κΈ°μ‘΄ κ΅¬ν˜„μ²΄λ“€κ³Ό λ§€λ„λŸ½κ²Œ μ—°λ™λ˜λ¦¬λΌλŠ” 보μž₯은 μ—†λ‹€. μžλ°” 7κΉŒμ§€μ˜ μ„Έμƒμ—μ„œλŠ” λͺ¨λ“  ν΄λž˜μŠ€κ°€ "ν˜„μž¬μ˜ μΈν„°νŽ˜μ΄μŠ€μ— μƒˆλ‘œμš΄ λ©”μ„œλ“œκ°€ 좔가될 일은 μ˜μ›νžˆ μ—†λ‹€"라고 κ°€μ •ν•˜κ³  μž₯μ„±λμœΌλ‹ˆ 말이닀. λ””ν΄νŠΈ λ©”μ„œλ“œλŠ” κ΅¬ν˜„ ν΄λž˜μŠ€μ— λŒ€ν•΄ 아무것도 λͺ¨λ₯Έ 채 ν•©μ˜ 없이 λ¬΄μž‘μ„± 'μ‚½μž…'될 뿐이닀. 이번 κΈ€μ—μ„œλŠ” 이런 경우 λ°œμƒν•  수 μžˆλŠ” 문제 상황듀을 μ‚΄νŽ΄λ³΄κ³  그에 λŒ€ν•œ 해결책을 μ•Œμ•„λ³΄μž. 2. [문제 상황 1] 생각할 수 μžˆλŠ” λͺ¨λ“  μƒν™©μ—μ„œ λΆˆλ³€μ‹μ„ ν•΄μΉ˜μ§€ μ•ŠλŠ” λ””ν΄νŠΈ λ©”μ„œλ“œλ₯Ό μž‘μ„±ν•˜κΈ°λž€ μ–΄λ ΅λ‹€. πŸ€– μžλ°” 8의 Collcti..

    좔상 ν΄λž˜μŠ€λ³΄λ‹€λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μš°μ„ ν•˜λΌ(좔상 골격 κ΅¬ν˜„(Skeletal Implementation) 클래슀)(2) - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ20)]

    이전 글을 톡해 μΈν„°νŽ˜μ΄μŠ€μ˜ μž₯점듀을 μ•Œμ•„λ³΄μ•˜λ‹€. 이번 κΈ€μ—μ„œλŠ” μΈν„°νŽ˜μ΄μŠ€μ™€ 골격 κ΅¬ν˜„(skeletal implementation) 클래슀λ₯Ό ν•¨κ»˜ μ œκ³΅ν•˜μ—¬ μΈν„°νŽ˜μ΄μŠ€μ™€ 좔상 클래슀의 μž₯점을 λͺ¨λ‘ μ·¨ν•˜λŠ” 방법을 μ•Œμ•„λ³΄μž. μΈν„°νŽ˜μ΄μŠ€μ™€ 좔상 클래슀λ₯Ό 같이 μ‚¬μš©ν–ˆμ„ λ•Œμ˜ μž₯점은 'μΈν„°νŽ˜μ΄μŠ€μ—μ„œ κ΅¬ν˜„ν•΄ 쀄 수 μžˆλŠ” 것듀은 λ””ν΄νŠΈ λ©”μ„œλ“œλ‘œ κ΅¬ν˜„ν•˜κ³ , κ΅¬ν˜„ν•΄ 쀄 수 μ—†λŠ” 것듀은 좔상 골격 ν΄λž˜μŠ€μ—μ„œ λ‚˜λ¨Έμ§€ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•œλ‹€.'λŠ” 것이닀. 좔상 골격 κ΅¬ν˜„ 클래슀λ₯Ό ν™œμš©ν•˜μ˜€μ„ λ•Œ 얻을 수 μžˆλŠ” 2κ°€μ§€μ˜ μž₯점에 λŒ€ν•΄μ„œ μžμ„Ένžˆ μ•Œμ•„λ³΄μž. (λͺ…μΉ­κ³Ό κ΄€λ ¨ν•˜μ—¬, 좔상 골격 클래슀라고 λΆ€λ₯΄λŠ” μ΄μœ λŠ” μΌλΆ€λ§Œ κ΅¬ν˜„ν•˜κ³  μΌλΆ€λŠ” κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„λ„ 되기 λ•Œλ¬Έμ΄λ‹€. μΈν„°νŽ˜μ΄μŠ€κ°€ λΌˆλŒ€ 역할을 ν•œλ‹€κ³  μƒκ°ν•˜λ©΄ μ‰¬μšΈ κ±° κ°™λ‹€.) μž₯점 1. λ‹¨μˆœνžˆ..

    좔상 ν΄λž˜μŠ€λ³΄λ‹€λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μš°μ„ ν•˜λΌ(μΈν„°νŽ˜μ΄μŠ€μ˜ μž₯점)(1) - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ20)]

    μžλ°”κ°€ μ œκ³΅ν•˜λŠ” 닀쀑 κ΅¬ν˜„ λ©”μ»€λ‹ˆμ¦˜μ€ 'μΈν„°νŽ˜μ΄μŠ€μ™€ 좔상 클래슀' 2가지가 μžˆλ‹€. μžλ°” 8λΆ€ν„° μΈν„°νŽ˜μ΄μŠ€λ„ Default Methodλ₯Ό μ œκ³΅ν•  수 있기 λ•Œλ¬Έμ— 두 λ©”μ»€λ‹ˆμ¦˜ λͺ¨λ‘ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ ν˜•νƒœλ‘œ μ œκ³΅ν•  수 μžˆλ‹€. λ‘˜μ˜ κ°€μž₯ 큰 μ°¨μ΄λŠ” 좔상 ν΄λž˜μŠ€κ°€ μ •μ˜ν•œ νƒ€μž…μ„ κ΅¬ν˜„ν•˜λŠ” ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ 좔상 클래슀의 ν•˜μœ„ ν΄λž˜μŠ€κ°€ λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 점이닀. μžλ°”λŠ” 단일 μƒμ†λ§Œ μ§€μ›ν•˜λ‹ˆ, 좔상 클래슀 방식은 μƒˆλ‘œμš΄ νƒ€μž…μ„ μ •μ˜ν•˜λŠ” 데 μ»€λ‹€λž€ μ œμ•½μ„ μ•ˆκ²Œ λ˜λŠ” 것이닀. 반면 μΈν„°νŽ˜μ΄μŠ€κ°€ μ„ μ–Έν•œ λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ μ •μ˜ν•˜κ³  κ·Έ 일반 κ·œμ•½μ„ 잘 지킨 클래슀라면 λ‹€λ₯Έ μ–΄λ–€ 클래슀λ₯Ό μƒμ†ν–ˆλ“  같은 νƒ€μž…μœΌλ‘œ μ·¨κΈ‰λœλ‹€. μ—¬κΈ°κΉŒμ§€κ°€ μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•œ κ°„λ‹¨ν•œ μ„€λͺ…이닀. 이번 κΈ€μ—μ„œ μΈν„°νŽ˜μ΄μŠ€μ˜ 5가지 μž₯점듀을 μ‚΄νŽ΄λ³΄λ©΄μ„œ ..