์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- css
- ComputerScience
- ๋ ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ํ
- ํ์ด์ฌ
- database
- K๋ฐฐํฐ๋ฆฌ
- ๊ฐ๋ฐ
- ์ค๋ผํด
- ์นํผ๋ธ๋ฆฌ์ฑ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ผํ๋ผ์ค์๋ง๋
- Java
- Python
- ์ปดํจํฐ๊ณผํ
- ํ๋ก๊ทธ๋๋ฐ
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- html
- ์๋ฐ
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ์ฑ
- ๋ฐ์ํ
- ๋ฆฌ์กํธ
- JavaScript
- ์ค๋ธ์
- ์ฝ๋ฉ
- Today
- Total
JiYoung Dev ๐ฅ
[๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ] ๋ด์ฉ ์ ๋ฆฌ + ์ ๊ทผ์ ํ์ protected, ๋ถ๋ชจํด๋์ค ์์ฑ์ super(); (2023.04.12) ๋ณธ๋ฌธ
[๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ] ๋ด์ฉ ์ ๋ฆฌ + ์ ๊ทผ์ ํ์ protected, ๋ถ๋ชจํด๋์ค ์์ฑ์ super(); (2023.04.12)
Shinjio 2023. 4. 12. 23:48๐๋ฐฐ์ด ๋ด์ฉ ์ ๋ฆฌ
๐๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง
1. ์บก์ํ(์ ๋ณด์๋)
2. ์์
๊ฐ์ ๊ธฐ๋ฅ, ๊ฐ์ ๋ณ์๊ฐ ์์ผ๋ฉด ์์์ ํ์ฉ
์์์ ์.
๋ง์ฐ์ค Class์ ๊ธฐ๋ฅ : ์ฐํด๋ฆญ, ์ขํด๋ฆญ, ๋๋๊ทธ
ํ ๋ง์ฐ์ค Class์ ๊ธฐ๋ฅ : ์ฐํด๋ฆญ, ์ขํด๋ฆญ, ๋๋๊ทธ → ๋ง์ฐ์ค์์ ์์
+ ์คํฌ๋กค
์ธ์ฒด๊ณตํ ๋ง์ฐ์ค Class์ ๊ธฐ๋ฅ : ์ฐํด๋ฆญ, ์ขํด๋ฆญ, ๋๋๊ทธ → ๋ง์ฐ์ค์์ ์์
+ ํผ๋ก๊ฐ์
public class ํ ๋ง์ฐ์ค extends ๋ง์ฐ์ค {
// ์์ํด๋์ค extends ๋ถ๋ชจํด๋์ค
//์์ํด๋์ค๋ ๋ถ๋ชจํด๋์ค์ ๊ธฐ๋ฅ, ํ๋๋ฅผ ๋ฌผ๋ ค๋ฐ๋๋ค.
}
์ปดํ์ผ์ ๋ฐ์ดํฐ(๊ธฐ๋ฅ)๋ฅผ ํ์ํด๋๊ฐ๋ ๋ฐฉํฅ : ์์ ํด๋์ค → ๋ถ๋ชจ ํด๋์ค
๋๋ฌผ(๋จน๋ค, ์๋ค, ์์ง์ด๋ค)
์กฐ๋ฅ(๋จน๋ค, ์๋ค, ์์ง์ด๋ค) → ๋๋ฌผ ํด๋์ค๋ฅผ ์์๋ฐ์
์์ง์ด๋ค์ ๊ตฌํ๋จ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋ : ์ค๋ฒ๋ผ์ด๋ฉ (์ฌ์ ์)
์ค๋ฒ๋ผ์ด๋ฉ์ด๋ ์์ ๊ด๊ณ์์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํ๋๊ฒ
๋งค๊ฐ๋ณ์ ๋ฐ๋์ง ์์. ๋ฉ์๋ ์ด๋ฆ ๋์ผํจ
{body}์์ ์๋ ๊ตฌํ๋จ๋ง ๋ฐ๊ฟ์ ๋ง๋๋ ๊ฒ
์ค๋ฒ๋ก๋ฉ(์ค๋ณต์ ์)์ด๋ ๊ฐ์ ํด๋์ค ๋ด์์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋จ, ๋งค๊ฐ๋ณ์์ ํํ๊ฐ ๋ฌ๋ผ์ผ ํ๋ค.
์ฐธ์(๋จน๋ค, ์๋ค, ์์ง์ด๋ค, ์ธ๋ค) → ์กฐ๋ฅ ํด๋์ค๋ฅผ ์์๋ฐ์
3. ์ถ์
์ถ์ ํค์๋ : abstract
1) ์ถ์ํด๋์ค
public abstract ํด๋์ค๋ช ();
์ถ์๋ฉ์๋๋ฅผ ํ๋๋ผ๋ ๊ฐ์ง๊ณ ์์ผ๋ฉด ์ผ๋ฐ ํด๋์ค๋ฅผ ์ถ์ ํด๋์ค๋ก ๋ง๋ค์ด์ค์ผ ํ๋ค.
์ถ์ํด๋์ค๋ ์ผ๋ฐ ๋ฉ์๋(body๊ฐ ์๋ ๋ฉ์๋)๋ฅผ ํฌํจํ ์ ์๋ค.
์ถ์๋ฉ์๋๊ฐ ํ๋๋ ๊ฐ์ง๊ณ ์์ง ์๋๋ผ๋ ์ถ์ ํด๋์ค๊ฐ ๋ ์ ์๋ค.
์ถ์ ํด๋์ค๋ ๊ฐ์ฒด ์์ฑ์ด ๋ถ๊ฐ๋ฅํ๋ค.
2) ์ถ์๋ฉ์๋
public abstract ๋ฆฌํดํ์ ๋ฉ์๋๋ช ();
- abstract ํค์๋๊ฐ ์๊ณ , body {}๊ฐ ์๋ ๋ฉ์๋
- ๋ฉ์๋์ ๊ตฌ์กฐ๋ง ์ ์ํด ๋์ ๋ฉ์๋ (์ ๊ทผ์ ํ์, ๋ฆฌํดํ์ , ๋ฉ์๋๋ช , ๋งค๊ฐ๋ณ์๋ง ์ ํด์ ธ ์๋ ๋ฉ์๋)
casting ~~~
์๋ฐ์ ๊ธฐ๋ณธ์๋ฃํ ํ๋ณํ : ๋ฌต์์ ํ๋ณํ, ๋ช ์์ ํ๋ณํ
๊ฐ์ฒด์๋ฃํ์ ํ๋ณํ
์กฐ๊ฑด : ์์๊ด๊ณ์์ ์ ์บ์คํ ๊ณผ ๋ค์ด์บ์คํ ์ด ๊ฐ๋ฅํจ
์ ์บ์คํ == ๋ฌต์์
์์ํด๋์ค(์๋ฃํ)์ด ๋ถ๋ชจํด๋์ค์ ์๋ฃํ์ผ๋ก ๋ณํ
๋ค์ด์บ์คํ == ๋ช ์์
์ ์บ์คํ ๋์ด์๋ ๊ฐ์ฒด ์๋ฃํ์ ๋ค์ ์๋ ์๋ฃํ์ผ๋ก ๋๋ฆฌ๋ ์์
๐protected ์ ๊ทผ์ ํ์
๊ฐ์ฒด ์งํฅ ์ธ์ด์๋ ์ ๊ทผ์ ํ์๋ฅผ ๋๊ณ ์์. ๊ฐ์ฒด๋ฅผ ์บก์ํํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ํ์ฉํ ์ง, ๋ง์ง๋ฅผ ์ง์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ(์ ๋ณด ์๋)
์๋ฐ์ ์ ๊ทผ์ ํ์(access specifier)
private - ํด๋น ํด๋์ค ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
protected - ๊ฐ์ ํจํค์ง์ ๋ชจ๋ ํด๋์ค์ ์ ๊ทผ ํ์ฉ. ๋ค๋ฅธ ํจํค์ง์ ์๋๋ผ๋ ์์ ํด๋์ค์ ๊ฒฝ์ฐ ์ ๊ทผ ํ์ฉ
public - ํจํค์ง์ ์๊ด์์ด ๋ค๋ฅธ ์ด๋ค ํด๋์ค์๊ฒ๋ ์ฌ์ฉ์ด ํ์ฉ - ๋ชจ๋ ํด๋์ค์ ์ ๊ทผ ํ์ฉ
์๋ต(๋ํดํธ ๋ฉค๋ฒ) - ๊ฐ์ ํจํค์ง ๋ด ํด๋์ค๋ค์๊ฒ๋ง ์ฌ์ฉ์ด ํ์ฉ
โป ๊ฐ์ฒด ์งํฅ ํน์ฑ์ ์ด๋ฆฌ๊ธฐ ์ํด์๋ ์บก์ํ์ ์์น์ด ์ง์ผ์ง๋๋ก ๊ฐ๋ฅํ ํ ์ ๊ทผ ๋ฒ์๋ฅผ ์๊ฒ ํ์ฌ ์ ๊ทผ ์ง์ ์๋ฅผ ์ ์ ํ๋ ๊ฒ์ด ์ข์. ํนํ ํ๋์ ๋ํด์๋ ํน๋ณํ ์ด์ ๊ฐ ์๋ ํ public์ ์ฌ์ฉ์ ์์ ํ๊ณ ๊ฐ๋ฅํ ํ private์ผ๋ก ์ ์ธ. ๋์ public ๋ฉ์๋๋ฅผ ๋ง๋ค์ด private ํ๋๋ฅผ ์กฐ์ํ๋๋ก ํจ.
๐๋ถ๋ชจํด๋์ค ์์ฑ์ : super();
์์ ํด๋์ค์ ์์ฑ์๊ฐ ํธ์ถ๋๋ฉด ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๊ฐ ๋จผ์ ์คํ๋๊ณ ์์ ํด๋์ค์ ์์ฑ์๊ฐ ๋์ค์ ์คํ๋จ. ์ปดํ์ผ๋ฌ๋ ์์ ํด๋์ค์ ์์ฑ์์ ๋ํด, ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ ๋ค ์์ ์ ์ฝ๋๋ฅผ ์คํํ๋๋ก ์ปดํ์ผํจ.
๋ถ๋ชจ ํด๋์ค๊ฐ ๋จผ์ ์ด๊ธฐํ ๋ ํ , ์ด๋ฅผ ํ์ฉํ๋ ์์ ํด๋์ค๊ฐ ์ด๊ธฐํ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ
๊ฐ๋ฐ์์ ๋ช ์์ ์ง์๊ฐ ์์ผ๋ฉด, ์๋ธ ํด๋์ค์ ์์ฑ์๊ฐ ๊ธฐ๋ณธ ์์ฑ์์ธ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ๊ฒ์ด๋ , ์ํผ ํด๋์ค์ ๋ง๋ค์ด์ง ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์ ํ๋จ.
์์ ํด๋์ค์ ์์ฑ์์์ super()๋ฅผ ์ด์ฉํ๋ฉด ๋ถ๋ชจ ํด๋์ค ์์ฑ์๋ฅผ ๋ช ์์ ์ผ๋ก ์ ํํ ์ ์์.
super()๋ ๋ถ๋ชจ ํด๋์ค ์์ฑ์๋ฅผ ํธ์ถํ๋ ์ฝ๋
๊ดํธ ์์ ์ธ์๋ฅผ ์ ๋ฌํ์ฌ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ ์๋ ์์
์ค์ํ ๊ฒ์ super()๋ ๋ฐ๋์ ์์ฑ์์ ์ฒซ ๋ผ์ธ์ ์ฌ์ฉ๋์ด์ผ ํจ
๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์์ ํด๋์ค์์ ๋ฐ๋์ ์์ฑ์๋ฅผ ๊ตฌํํด์ค์ผ ํ๋ค.
๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ (OOP) ์ ๋ฆฌ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ : ๊ธฐ๋ฅ๋ค์ ํด๋์ค๋ก ๊ตฌ๋ถ(๋๋๋ค)
- ์ฅ์ : ๊ธฐ๋ฅ ํ ๊ฐ๊ฐ ๊ณ ์ฅ๋๋ ํ๋ก๊ทธ๋จ์ ๋์ํ๋ค.
- ๋จ์ : ์ปดํ์ผ์ด ์๋์ ์ผ๋ก ๋๋ฆผ
ํด๋์ค(Class) : ์ค๊ณ๋
- ํ๋ : Object๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ณตํต ๋ฐ์ดํฐ = ๋ณ์
- ๋ฉ์๋ : ๊ฐ์ฒด์ ํ์ ๋๋ ๊ธฐ๋ฅ
- ์์ฑ์ : ๊ฐ์ฒด ์์ฑ๊ณผ ๋์์ ํ๋๋ฅผ ์ด๊ธฐํ
1) ๋ฆฌํดํ์ ์ด ์๋ค. (void x)
2) ์์ฑ์์ ์ด๋ฆ์ ์ค๊ณ๋(class)์ ์ด๋ฆ๊ณผ ๋์ผํ๋ค
3) ์์ฑ์๋ ๋ฉ์๋๋ค.
4) ๊ธฐ๋ณธ์์ฑ์๋ ์๋ต๋์ด ์๋ค.
→ ์๋ก์ด ์์ฑ์๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด ๊ธฐ๋ณธ ์์ฑ์๋ ๊ธฐ๋ฅ์ ์๋๋ค. (์ฌ์ฉ๋ถ๊ฐ)
→ ๊ธฐ๋ณธ ์์ฑ์๋ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด ์ฝ๋๋ก ์์ฑํด์ค์ผ ํ๋ค. (์๋ต์ด ๋ถ๊ฐ๋ฅํ๋ค)
+ ํด๋์ค๋ฅผ Object๋ก ๋ง๋๋ ํ์(๊ณผ์ ) : ์ธ์คํด์คํ
๊ฐ์ฒด(Object) : ํด๋์ค๋ก ๋ง๋ ๊ฒ
ํด๋์ค๋ช ๋ณ์๋ช = new ํด๋์ค๋ช (); - ๊ฐ์ฒด ์์ฑ
๋ณ์๋ช .ํ๋/๋ฉ์๋ . ๊ธฐํธ๋ฅผ ํตํด ์ ๊ทผ๊ฐ๋ฅ (. : ์ฐธ์กฐํ๋ค)
ํ๋์ธ๋ชจ : ํ๋
์ด๋ก๋๊ทธ๋ผ๋ฏธ : ๋ฉ์๋
์์
public ํด๋์ค๋ช extends ๋ถ๋ชจํด๋์ค๋ช
extends(ํ์ฅํ๋ค)
์ค๋ฒ๋ผ์ด๋ฉ : ์์๊ด๊ณ์์ ๋ฉ์๋๋ฅผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๊ฐ์ ๋งค๊ฐ๋ณ์์ ํํ๋ก ์ฌ์ฉํ๋ {body} ๋ง ๋ค๋ฅด๊ฒ ๊ตฌํ
์ถ์๋ฉ์๋ ----> ์ถ์ํด๋์ค
abstract
์ถ์๋ฉ์๋
public abstract ๋ฆฌํดํ์ ๋ฉ์๋๋ช ();
๋ฐ๋๊ฐ ์๋ ๋ฉ์๋, ์ค๊ณ๋ง ๋์ด ์๋ ๋ฉ์๋
์ผ๋ฐ ํด๋์ค๋ ์ถ์ ๋ฉ์๋๋ฅผ ํฌํจํ ์ ์์. ์ถ์ ๋ฉ์๋๋ฅผ ํฌํจํ๊ณ ์๋ ํด๋์ค๋ ์ถ์ ํด๋์ค๋ก ๋ณ๊ฒฝ๋์ด์ผ ํจ
์ถ์ํด๋์ค
public abstract class ํด๋์ค๋ช
์ถ์ ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
์ถ์ ํด๋์ค๋ ์ผ๋ฐ ๋ฉ์๋(๋ฐ๋๊ฐ ์๋ ๋ฉ์๋)๋ ํฌํจํ ์ ์๋ค.
์ถ์ ๋ฉ์๋๊ฐ 0๊ฐ์ฌ๋ ์ถ์ ํด๋์ค๋ก ๋ฐ๊ฟ์ค ์ ์๋ค.
super - ๋ถ๋ชจ๋ฅผ ์ง์นญํ๋ ํค์๋
super(); - ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ณธ ์์ฑ์
super(๋งค๊ฐ๋ณ์); - ๋ถ๋ชจ ํด๋์ค์ ์๋ก ๋ง๋ ์์ฑ์
๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์์ ํด๋์ค์์ ๋ฐ๋์ ์์ฑ์๋ฅผ ๊ตฌํํด์ค์ผ ํ๋ค.
protected : ์ ๊ทผ์ ํ์
์์๊ด๊ณ์ ์๋ ํด๋์ค๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ํ๊ฒ ํด์ฃผ๋ ์ ํ์
์์ ๊ด๊ณ๊ฐ ์๋ ํด๋์ค๋ค์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.
-----
์ธํฐํ์ด์ค
โป ์ถ์๊ณผ ์ธํฐํ์ด์ค๋ฅผ ๋ง์ด ํท๊ฐ๋ คํ๋ค.