Skip to content

Commit 6c1b1e5

Browse files
committed
[docs] week6_7.상속
1 parent 99a276e commit 6c1b1e5

File tree

1 file changed

+62
-8
lines changed

1 file changed

+62
-8
lines changed

Diff for: β€Žweek2/juyeong.md

+62-8
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,85 @@ extends, implementsλ₯Ό 큰 생각없이 μŠ΅κ΄€μ μœΌλ‘œ μ“°λ‹€κ°€, μ΄λ ‡κ²Œ λ“€
55
# 7. 상속
66
상속 : λΆ€λͺ¨κ°€ μžμ‹μ—κ²Œ λ¬Όλ €μ£ΌλŠ” ν–‰μœ„
77
- λΆ€λͺ¨ 클래슀의 멀버λ₯Ό μžμ‹ ν΄λž˜μŠ€μ—κ²Œ 물렀쀄 수 μžˆλ‹€.
8-
- extends
9-
-
10-
## 클래슀 상속
8+
- class μžμ‹ extends λΆ€λͺ¨
9+
- μ½”λ“œμ˜ 쀑볡을 막고, 클래슀의 μˆ˜μ •μ„ μ΅œμ†Œν™”ν•˜λ©° μœ μ§€λ³΄μˆ˜ μ‹œκ°„μ„ 쀄인닀.
10+
- 상속 μ‹œ λΆ€λͺ¨μ˜ λͺ¨λ“  ν•„λ“œ,λ©”μ†Œλ“œλ₯Ό λ¬Όλ €λ°›λŠ” 것은 μ•„λ‹ˆκ³  private μ ‘κ·Ό μ œν•œμ€ μ œμ™Έλœλ‹€.
11+
- μžλ°”λŠ” 닀쀑 상속을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
12+
13+
1114

1215
## λΆ€λͺ¨ μƒμ„±μž 호좜
16+
- μžμ‹ 객체λ₯Ό μƒμ„±ν•˜λ©΄ λΆ€λͺ¨ 객체가 λ¨Όμ € μƒμ„±λ˜κ³  μžμ‹ 객체가 κ·Έ λ‹€μŒμ— μƒμ„±λœλ‹€.
17+
- λͺ¨λ“  κ°μ²΄λŠ” 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•΄μ•Όλ§Œ μƒμ„±λ˜λŠ”λ°, λΆ€λͺ¨ μƒμ„±μžλ₯Ό μ–΄λ””μ„œ ν˜ΈμΆœν–ˆλƒλ©΄.. λ°”λ‘œ super(); μ–˜λ‹€.
18+
- μƒλž΅κ°€λŠ₯ν•˜μ§€λ§Œ, λΆ€λͺ¨ν΄λž˜μŠ€μ— κΈ°λ³Έ μƒμ„±μžκ°€ μ—†κ³  λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μžλ§Œ μžˆλ‹€λ©΄
19+
- μžμ‹ν΄λž˜μŠ€μ—μ„œλ„ λͺ…μ‹œμ μœΌλ‘œ super(λ§€κ°œλ³€μˆ˜, , ...) 라고 ν˜ΈμΆœν•΄μ•Ό ν•œλ‹€.
1320

1421
## λ©”μ†Œλ“œ μž¬μ •μ˜
22+
1. λΆ€λͺ¨ 클래슀의 λͺ¨λ“  λ©”μ†Œλ“œκ°€ μžμ‹ ν΄λž˜μŠ€μ— 맞게 μ„€κ³„λ˜μ–΄ μžˆλ‹€λ©΄, κ°€μž₯ μ΄μƒμ μ΄μ§€λ§Œ μ–΄λ–€ λ©”μ†Œλ“œλŠ” μžμ‹ ν΄λž˜μŠ€κ°€ μ‚¬μš©ν•˜κΈ°μ— μ ν•©ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€.
23+
2. 이 경우 μƒμ†λœ 일뢀 λ©”μ†Œλ“œλŠ” μžμ‹ ν΄λž˜μŠ€μ—μ„œ λ‹€μ‹œ μˆ˜μ •ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
24+
3. 이런 경우λ₯Ό μœ„ν•΄ λ©”μ†Œλ“œ μ˜€λ²„λΌμ΄λ”© κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
25+
-> μžλ°”μ—μ„  @Override μ‚¬μš©
26+
4. μžμ‹ ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•˜κ²Œ 되면, λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œλŠ” μˆ¨κ²¨μ§€κ³  μ˜€λ²„λΌμ΄λ”© 된 μžμ‹ λ©”μ†Œλ“œλ§Œ μ‚¬μš©λœλ‹€. λΆ€λͺ¨ 클래슀 λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜κ³  μ‹Άλ‹€λ©΄ super.λΆ€λͺ¨λ©”μ†Œλ“œ(); ν•˜λ©΄ 됨
27+
1528

1629
## final ν΄λž˜μŠ€μ™€ final λ©”μ†Œλ“œ
30+
- 클래슀/λ©”μ†Œλ“œ μ„ μ–Έ μ‹œμ— final ν‚€μ›Œλ“œλ₯Ό 뢙이면 상속과 관련이 μžˆλ‹€.
31+
- 클래슀 μ„ μ–Έμ‹œ final ν‚€μ›Œλ“œλ₯Ό 뢙이면 μ΅œμ’…μ μΈ 클래슀 μ΄λ―€λ‘œ 상속할 수 μ—†λ‹€.
32+
- λ©”μ†Œλ“œ μ„ μ–Έ μ‹œ final ν‚€μ›Œλ“œλ₯Ό 뢙이면, 이 λ©”μ†Œλ“œλŠ” μ΅œμ’…μ μΈ λ©”μ†Œλ“œμ΄λ―€λ‘œ, μ˜€λ²„λΌμ΄λ”©ν•  수 μ—†λŠ” λ©”μ†Œλ“œκ°€ λœλ‹€.
1733

18-
## protected μ ‘κ·Ό μ œν•œμž
34+
## protected μ ‘κ·Ό μ œν•œμž (ν•„λ“œ, μƒμ„±μž, λ©”μ†Œλ“œ 선언에 μ‚¬μš©)
35+
- protectedλŠ” publicκ³Ό default의 쀑간 쯀이닀.
36+
- 같은 νŒ¨ν‚€μ§€μ—μ„œλŠ” default와 같이 μ ‘κ·Ό μ œν•œμ΄ μ—†μŒ
37+
- λ‹€λ₯Έ νŒ¨ν‚€μ§€μ—μ„œλŠ” μžμ‹ 클래슀만 접근을 ν—ˆμš©ν•œλ‹€. (이게 포인트!)
1938

2039
## νƒ€μž…λ³€ν™˜κ³Ό λ‹€ν˜•μ„±
21-
22-
## μΆ”μƒν΄λž˜μŠ€
23-
40+
λ‹€ν˜•μ„±μ€ 같은 νƒ€μž…μ΄μ§€λ§Œ μ‹€ν–‰ κ²°κ³Όκ°€ λ‹€μ–‘ν•œ 객체λ₯Ό 이용 ν•  수 μžˆλŠ” μ„±μ§ˆμ„ λ§ν•œλ‹€.
41+
ν•˜λ‚˜μ˜ νƒ€μž…μ— μ—¬λŸ¬ 객체λ₯Ό λŒ€μž…ν•¨μœΌλ‘œμ¨ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ΄μš©ν•  수 μžˆλ„λ‘ ν•΄μ€€λ‹€.
42+
λ‹€ν˜•μ„±μ„ μœ„ν•΄ μžλ°”λŠ” λΆ€λͺ¨ 클래슀둜 νƒ€μž… λ³€ν™˜μ„ ν—ˆμš©ν•œλ‹€.
43+
즉, λΆ€λͺ¨ νƒ€μž…μ— λͺ¨λ“  μžμ‹ 객체가 λŒ€μž… 될 수 μžˆλ‹€.
44+
이 λ–„, μ—­μ‹œ μžμ‹νƒ€μž…μ΄ λΆ€λͺ¨νƒ€μž…μœΌλ‘œ κ°•μ œ νƒ€μž… λ³€ν™˜ (Casting) 될 수 있고, 이땐 뭘둜 확인해야겠어
45+
λ°”λ‘œ instanceof πŸ‘
2446

2547
```
26-
try {
48+
boolean result = μ’Œν•­(객체) instanceof μš°ν•­(νƒ€μž…)
49+
50+
public vod method(Parent parent){
51+
if(parent istnaceof Child){ //κ°•μ œ νƒ€μž… λ³€ν™˜ κ°€λŠ₯ : True , false 둜 λ°˜ν™˜
52+
Child child = (Child) parent;
53+
}
2754
}
2855
```
2956

3057

3158

3259

60+
## μΆ”μƒν΄λž˜μŠ€
61+
좔상은 싀체 간에 κ³΅ν†΅λ˜λŠ” νŠΉμ„±μ„ μΆ”μΆœν•œ 것이고 객체λ₯Ό 직접 생성할 수 μžˆλŠ” 클래슀λ₯Ό 싀체 클래슀라고 ν•œλ‹€.
62+
좔상 ν΄λž˜μŠ€μ™€ 싀체 ν΄λž˜μŠ€λŠ” μƒμ†μ˜ 관계λ₯Ό κ°€μ§€κ³  μžˆλ‹€.
63+
좔상 ν΄λž˜μŠ€λŠ” μƒˆλ‘œμš΄ 싀체 클래슀λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ λΆ€λͺ¨ 클래슀둜만 μ‚¬μš©λœλ‹€.
64+
65+
### 좔상 클래슀의 μš©λ„
66+
1. 싀체 ν΄λž˜μŠ€λ“€μ˜ κ³΅ν†΅λœ ν•„λ“œμ™€ λ©”μ†Œλ“œμ˜ 이름을 톡일할 λͺ©μ 
67+
ν•Έλ“œν° 클래슀λ₯Ό μ„€κ³„ν•œλ‹€ ν•˜λ©΄,
68+
- ν•„λ“œλͺ… 뢈일치
69+
Telephone ν΄λž˜μŠ€μ—μ„  owner, SmartPhoneμ—μ„œλŠ” user라고 μ €μž₯
70+
- λ©”μ†Œλ“œλͺ… 뢈일치
71+
Telephone ν΄λž˜μŠ€μ—μ„  powerOn(), SmartPhoneμ—μ„œλŠ” turnOn()
72+
μ΄λ ‡κ²Œ κ³΅ν†΅λœ ν•„λ“œμ™€ λ©”μ†Œλ“œ 이름을 톡일 ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.
73+
74+
2. 싀체 클래슀 μž‘μ„±μ‹œ μ‹œκ°„ μ ˆμ•½
75+
곡톡 ν•„λ“œ/λ©”μ†Œλ“œλŠ” 좔상 클래슀인 Phone에 λͺ¨λ‘ μ„ μ–Έν•˜κ³ , 싀체 ν΄λž˜μŠ€λ§ˆλ‹€ λ‹€λ₯Έ 점만 μ„ μ–Έν•˜κ²Œ 되면, 싀체 클래슀 μž‘μ„±μ‹œμ— μ‹œκ°„μ„ μ ˆμ•½ ν•  수 μžˆλ‹€.
76+
즉 좔상 ν΄λž˜μŠ€λŠ” 섀계 규격의 μ—­ν™œμ„ ν•˜κ²Œ λœλ‹€.
77+
```
78+
public abstract class 클래슀{
79+
//ν•„λ“œ
80+
//μƒμ„±μž
81+
//λ©”μ†Œλ“œ
82+
}
83+
```
84+
- μžμ‹ ν΄λž˜μŠ€μ—μ„œ 좔상 λ©”μ†Œλ“œλ₯Ό Overrideν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.
85+
86+
3387
# 8. μΈν„°νŽ˜μ΄μŠ€
3488
## μΈν„°νŽ˜μ΄μŠ€
3589
- 객체의 μ‚¬μš©λ°©λ²•μ„ μ •μ˜ν•œ νƒ€μž…

0 commit comments

Comments
Β (0)