2024-08-29 20:44:22
λ°˜μ‘ν˜•

자 μ˜€λŠ˜μ€, 좔상 ν΄λž˜μŠ€μ™€ 좔상 λ©”μ†Œλ“œμ— κ΄€ν•΄μ„œ μ•Œμ•„λ³΄μž.

 

그럼 λ¨Όμ € μš©μ–΄ λΆ€ν„° μ•Œμ•„λ³΄λ„λ‘ ν•˜μž.

 

좔상 ν΄λž˜μŠ€λž€?

--->

1개 μ΄μƒμ˜ μΆ”μƒλ©”μ†Œλ“œλ₯Ό 가지고 μžˆλŠ” ν΄λž˜μŠ€μ΄λ‹€.

좔상 ν΄λž˜μŠ€κ°™μ€ κ²½μš°μ—λŠ”, λ―Έκ΅¬ν˜„λœ(μΆ”μƒλ©”μ†Œλ“œ)λ₯Ό λ©€λ²„λ‘œ 가지고 있기 λ•Œλ¬Έμ— λ…λ¦½μ μœΌλ‘œ

객체화가 λΆˆκ°€λŠ₯ν•˜λ‹€. 이 λœ»μ€ Class A = new Class(); 와 같은 ν˜•μ‹μœΌλ‘œ 객체화λ₯Ό ν•˜μ§€ λͺ»ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€.

 

좔상 클래슀λ₯Ό μƒμ†λ°›λŠ” μžμ‹ ν΄λž˜μŠ€λŠ” μΆ”μƒλ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” "κ°•μ œμ„±"을 가진닀. 

λ‚˜μ€‘μ— μ„€λͺ… 될 μ΄μ•ΌκΈ°μ§€λ§Œ, 객체화λ₯Ό μ‚¬μš©ν•  수 μ—†μœΌλ‹ˆ, static 을 μ΄μš©ν•˜λ©΄ 객체화 없이 μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

 

κ·Έλ ‡λ‹€λ©΄ 좔상 λ©”μ†Œλ“œκ°€ 무엇이냐?

 

좔상 λ©”μ†Œλ“œλž€?

--->

μ„ μ–Έλ§Œ 되고, κ΅¬ν˜„μ΄ λ˜μ§€ μ•Šμ€ λ©”μ†Œλ“œμ΄λ‹€(λ―Έκ΅¬ν˜„ 된 λ©”μ†Œλ“œ)

λ‹€μŒκ³Ό 같은 ν˜•νƒœλΌκ³  λ³Ό 수 μžˆλ‹€

μ ‘κ·Όμ œν•œμž λ¦¬ν„΄νƒ€μž… λ©”μ†Œλ“œλͺ…(μžλ£Œν˜• λ§€κ°œλ³€μˆ˜λͺ…) => μ„ μ–ΈλΆ€
{
μ‹€ν–‰ν•  μ½”λ“œ => κ΅¬ν˜„λΆ€(body)
}

 

좔상 λ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™λ‹€.

μ ‘κ·Όμ œν•œμž abstract λ¦¬ν„΄νƒ€μž… λ©”μ†Œλ“œλͺ…(μžλ£Œν˜• λ§€κ°œλ³€μˆ˜λͺ…);

 

1. abstract ν‚€μ›Œλ“œλ₯Ό μž‘μ„±ν•œλ‹€
2. λ§ˆμ§€λ§‰μ— μ„Έλ―Έμ½œλ‘ μ„ λΆ™μΈλ‹€

 

즉, κ΅¬ν˜„λΆ€(μ€‘κ΄„ν˜Έ λΆ€λΆ„)이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 것이닀.

 

μ΄λŸ¬ν•œ 좔상 λ©”μ†Œλ“œλ₯Ό λ©€λ²„λ‘œ 가지고 μžˆλŠ” 것이 λ°”λ‘œ 좔상 ν΄λž˜μŠ€μ΄λ‹€.

그런 좔상 클래슀λ₯Ό μ„ μ–Έν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™λ‹€.

 

abstract class ν΄λž˜μŠ€λͺ…{
ν•„λ“œ
μƒμ„±μž
일반 λ©”μ†Œλ“œ
좔상 λ©”μ†Œλ“œ
}

* μΆ”상 λ©”μ†Œλ“œλ₯Ό 1개 μ΄μƒ κ°€μ§€λŠ” ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ
abstract ν‚€μ›Œλ“œλ₯Ό ν†΅ν•΄ μΆ”μƒν΄λž˜μŠ€λ‘œ μ„ μ–Έν•΄μ•Ό ν•œλ‹€

 

κ·Έλ ‡λ‹€λ©΄, 좔상 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ κ°€ λ„λŒ€μ²΄ λ¬΄μ—‡μΌκΉŒ?

--> 

μžμ‹ 클래슀 κ°„μ˜ 곡톡적인 λ©”μ†Œλ“œ 이름을 톡일할 수 μžˆλ‹€. 즉, 톡일성을 λΆ€μ—¬ν•˜κΈ°κ°€ μš©μ΄ν•˜λ‹€.

λ˜ν•œ, λ°˜λ“œμ‹œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•¨μœΌλ‘œμ¨ 곡톡 κ·œκ²©μ„ μ œκ³΅ν•œλ‹€.

==> κ΅¬ν˜„μ€ μžμ‹ ν΄λž˜μŠ€λ§ˆλ‹€ λ‹€λ₯΄κ²Œ μ‚¬μš©κ°€λŠ₯

즉, μ‚¬μš©μžκ°€ 직접 λ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•΄μ•Ό ν•œλ‹€λŠ” κ°•μ œμ„±μ„ λΆ€μ—¬ν•˜κΈ° λ•Œλ¬Έμ—, μ‚¬μš©μžμ˜ μž…λ§›μ— 맞게

섀정을 ν•΄μ€˜μ•Όλ§Œ ν•œλ‹€λŠ” 의미λ₯Ό λΆ€μ—¬ν•  수 μžˆλ‹€λŠ” 것이닀.

 

κ·Έλ ‡λ‹€λ©΄ 이제 μ˜ˆμ‹œμ™€ μ½”λ“œλ₯Ό 보자.

 

μΆ”μƒν΄λž˜μŠ€ AbsClass μ„ μ–Έ

 

자 보면, μΆ”μƒν΄λž˜μŠ€ AbsClassλ₯Ό μ„ μ–Έν•˜μ˜€λ‹€. λ©€λ²„λ‘œ 가지고 μžˆλŠ” 것듀을 확인해보면, 

ν•„λ“œμ— int absData; μ„ μ–Έλ˜μ–΄μžˆκ³ 

μƒμ„±μžλ‘œλŠ” parameter둜 int absData λ°›κ²Œ λ˜μ–΄μžˆκ³  ν•„λ“œμ— μ €μž₯ν•˜κ²Œ λ˜μ–΄μžˆλ‹€. λ™μ‹œμ— 좜λ ₯λ©”μ†Œλ“œκ°€ μžˆλ‹€.

 

κ·Έ μ•„λž˜μ— 이제 μ€‘μš”ν•˜κ²Œ μžˆλŠ” 것이, public abstract void abstractMethod1();κ³Ό

public abstract void abstractMethod2();이닀. 이것듀이 λ°”λ‘œ κ΅¬ν˜„λΆ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 좔상 λ©”μ†Œλ“œλ‹€.

μž¬μ •μ˜κ°€ κ°•μ œλ˜λŠ” 것이닀. 일반 λ©”μ†Œλ“œλŠ” κ·Έλƒ₯ 비ꡐλ₯Ό μœ„ν•΄μ„œ 집어 λ„£μ–΄λ³΄μ•˜λ‹€.

 

AbsClassλ₯Ό μƒμ†λ°›λŠ” μžμ‹ 클래슀 ClassA

ClassAλ₯Ό μžμ‹ 클래슀둜 선언을 ν•˜μ˜€λ‹€. extends AbsClass둜 상속받고 μžˆλŠ” 것을 확인할 수 μžˆλ‹€.

νŠΉμ΄μ μ€ λ°”λ‘œ μ—¬κΈ° μ–΄λ…Έν…Œμ΄μ…˜(@Override) μ˜€λ²„λΌμ΄λ”© 된 λ©”μ†Œλ“œλ“€μ΄λ‹€.

 

μžμ‹ ν΄λž˜μŠ€λŠ” μΆ”μƒλ©”μ†Œλ“œμ˜ μž¬μ •μ˜λ₯Ό κ°•μ œλ°›κΈ° λ•Œλ¬Έμ—, μ΄λ ‡κ²Œ μž¬μ •μ˜λ₯Ό 무쑰건 ν•΄μ€˜μ•Όλ§Œ ν•œλ‹€.

κ·Έλ ‡λ‹€λ©΄ λ§Œμ•½ μž¬μ •μ˜λ₯Ό ν•˜μ§€ μ•Šκ³ , λ˜λ‹€λ₯Έ 좔상 λ©”μ†Œλ“œλ₯Ό λ§Œλ“€μ–΄λ²„λ¦°λ‹€λ©΄ μ–΄λ–»κ²Œ 될까?

 

λ˜λ‹€λ₯Έ μΆ”μƒλ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•œ μžμ‹ν΄λž˜μŠ€

(이 ν΄λž˜μŠ€λŠ” ClassAμ™€λŠ” μ™„μ „νžˆ λ³„κ°œμ΄λ―€λ‘œ 상관이 μ—†λ‹€)

AbsClassλ₯Ό μƒμ†λ°›λŠ” μƒˆλ‘œμš΄ μžμ‹ 클래슀 ClassB인데, μΆ”μƒλ©”μ†Œλ“œλ₯Ό μž¬μ •μ˜ν•˜μ§€ μ•Šκ³  였히렀 μƒˆλ‘œμš΄

μΆ”μƒλ©”μ†Œλ“œλ₯Ό λ§Œλ“€μ–΄λ²„λ Έλ‹€. μ΄λ ‡κ²Œ 되면, 이 클래슬 λ°›λŠ” λ‹€μŒ μžμ‹μ΄ λͺ¨λ“  것을 μ§Šμ–΄μ§„λ‹€. λ°”λ‘œ μ΄λ ‡κ²Œ 말이닀.

λͺ¨λ“  κ±Έ μž¬μ •μ˜ ν•΄μ•Όν•˜λŠ” 운λͺ…μ˜ 클래슀

κ²°κ΅­ λͺ¨λ“ κ±Έ μž¬μ •μ˜λ₯Ό ν•˜λŠ” κ°•μ œμ„±μ„ λ°›κ²Œλœ 클래슀 ClassC이닀.

이렇듯 κ°•μ œμ„±μ„ λ„˜κΈΈ μˆ˜λŠ” μžˆμ§€λ§Œ, κ²°κ΅­ κ·Έ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μš°λ¦¬λŠ” μž¬μ •μ˜λ₯Ό ν•΄μ€˜μ•Όλ§Œ ν•œλ‹€λŠ” 것이닀.

 

λ§ˆμ§€λ§‰μœΌλ‘œ AbsClassλŠ” μΆ”μƒν΄λž˜μŠ€μ΄κΈ° λ•Œλ¬Έμ— 객체화가 직접 μ•ˆλœλ‹€λŠ” 것을 확인해보고 마무리 ν•˜μž.

λ‹€μŒ μ½”λ“œλ₯Ό 보라

λ©”μΈλ©”μ†Œλ“œ κ΅¬ν˜„

참고둜 μΆ”μƒν΄λž˜μŠ€λ„ λΆ€λͺ¨ ν΄λž˜μŠ€μ΄λ‹€. λ”°λΌμ„œ μ—…μΊμŠ€νŒ…μ΄ κ°€λŠ₯ν•˜λ‹€.

μ½˜μ†”μ°½ κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

μ½˜μ†” κ²°κ³Ό

ν΄λž˜μŠ€λ“€μ„ 잘 μ‚΄νŽ΄λ³΄λ©΄ κ²°κ³Όκ°€ μ™œμ΄λ ‡κ²Œ λ‚˜μ˜€λŠ”μ§€ λ‹Ήμ—°ν•˜κ²Œ μ•Œ 수 μžˆμ„ 것이닀.

μ˜€λŠ˜μ€ 기본적인 μΆ”μƒν΄λž˜μŠ€μ™€ 좔상 λ©”μ†Œλ“œμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜λ‹€.

 

μ˜€λŠ˜μ€ μ—¬κΈ°κΉŒμ§€

 

728x90