λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ‹œλ„/ꡭ비지원

[D+62] μžλ°”ν”„λ‘œκ·Έλž˜λ°7 (νƒ€μž…μ˜ μ œν•œ, μ œλ„€λ¦­ λ©”μ†Œλ“œ, μ œλ„€λ¦­ 클래슀의 상속, 타켓 νƒ€μž…)

by πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2022. 12. 18.

 

 

ꡭ비지원 D+62

-  μžλ°”ν”„λ‘œκ·Έλž˜λ°7 -

 


 

νƒ€μž…μ˜ μ œν•œ

μ œλ„€λ¦­ νƒ€μž…μ— μ œν•œμ„ κ±Έμ–΄μ•Όν•˜λŠ” μ΄μœ λŠ” ν•œμ •λœ νƒ€μž…μ„ 지정해 λ†“μœΌλ©΄ ν•œμ •λœ νƒ€μž…μ— λŒ€ν•œ κ³΅ν†΅λœ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

→ 기계적 이유 ) νƒ€μž…μ— μ œν•œμ„ 걸어두지 μ•ŠμœΌλ©΄ μ•„λ¬΄κ±°λ‚˜ 올수 있으며, μ΄λŠ” νŠΉμ • λ©”μ†Œλ“œλ₯Ό 뢈러올 수 μ—†λ‹€.

→ 논리적 이유 ) νƒ€μž…μ— μ œν•œμ„ κ±Έμ–΄λ‘μ—ˆμ„ μ‹œμ— 논리적 κ°€μ΄λ“œλΌμΈμ„ μ œκ³΅ν•˜λ©° μ΄λŠ” λ¦¬λ”λΉŒλ¦¬ν‹°κ°€ μƒμŠΉν•œλ‹€.

<T> : νƒ€μž… 어떀것이든 올 수 μžˆμ–΄
<T extends Number> : Numberνƒ€μž…μ—μ„œ νŒŒμƒλœ 클래슀만 올 수 μžˆμ–΄ (Integer, Double)

 

• 클래슀λ₯Ό μ΄μš©ν•œ νƒ€μž…μ˜ μ œν•œ

- class Box <T extends Number> { ... }

- μΈμŠ€ν„΄μŠ€ μƒμ„±μ‹œμ— νƒ€μž…μΈμžλ‘œ Number λ˜λŠ” 이λ₯Ό μƒμ†ν•˜λŠ” 클래슀만 올 수 μžˆλ‹€.

class Box <T extends Number>
{
	private T obj;
    
    public T get()
    {
    	return obj;
    }
    
    public void set(T obj)
    {
    	this.obj = obj;
    }
    
    public int getIntValue()
    {
    	return obj.intValue();
    }
}

 

• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•œ νƒ€μž…μ˜ μ œν•œ

- 클래슀λ₯Ό μ΄μš©ν•œ νƒ€μž…μ˜ μ œν•œκ³Ό 같은 μ›λ¦¬λ‘œ μΈν„°νŽ˜μ΄μŠ€κ°€ 왔을 λ•Œ, ν•΄λ‹Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 클래슀일 κ²½μš°μ— 올 수 μžˆλ‹€.

 

• νƒ€μž…μ˜ 닀쀑 μ œν•œ

- νƒ€μž…μ„ λ‹€μ€‘μœΌλ‘œ μ œν•œν•˜κ³  싢을 λ•Œμ— &λ₯Ό ν†΅ν•΄μ„œ μ΄μ€‘μœΌλ‘œ μ œν•œμ„ λ‘˜ 수 μžˆλ‹€.

class Box <T extends Number & Eatable> { ... }
class Box <T extends Animal & Egg> { ... }

 

 


μ œλ„€λ¦­ λ©”μ†Œλ“œ

μ œλ„€λ¦­ λ©”μ†Œλ“œλŠ” 클래슀 전체가 μ•„λ‹Œ λ©”μ†Œλ“œμ—μ„œλ§Œ μ œλ„€λ¦­μ„ μ μš©ν•˜λŠ” κ²ƒμœΌλ‘œ μ œλ„€λ¦­ ν΄λž˜μŠ€μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ ν˜ΈμΆœμ‹œμ μ— κ²°μ •λœλ‹€.

 

 

 


μ œλ„€λ¦­ 클래슀의 상속

μ œλ„€λ¦­ν΄λž˜μŠ€λ„ 일반적인 μƒμ†λ©”μ»€λ‹ˆμ¦˜μ„ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

μ΄λ•Œ, λΆ€λͺ¨ν΄λž˜μŠ€κ°€ μ œλ„€λ¦­μ„ μ‚¬μš©ν–ˆμ„ λ•Œμ— μžμ‹ν΄λž˜μŠ€λ„ μ œλ„€λ¦­ 클래슀λ₯Ό μ‚¬μš©ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.

 

 


νƒ€κ²Ÿ νƒ€μž…

νƒ€μž…μΆ”λ‘ μ„ ν†΅ν•΄μ„œ μ•Œμ•„λ‚Έ 데이터 νƒ€μž…μ΄λ‹€.

νƒ€μž…μ„ κ²°μ •ν•˜λŠ” μ‹œμ μ—μ„œ μ–΄λ–€ νƒ€μž…μΈμ§€λ₯Ό μ•Œμˆ˜μžˆλŠ” 것을 μ•Œ 수 μžˆλŠ” 것을 νƒ€κ²Ÿνƒ€μž…μ΄λΌκ³  ν•œλ‹€.

μ΄λ•Œ νƒ€μž…μ„ λͺ¨λ₯΄λ©΄ 좔둠을 μ‹œμž‘ν•œλ‹€.

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€