์ถ์ํ(abstraction) ?
์ฌ์ฉ์์๊ฒ ๋ถํ์ํ ์ ๋ณด๋ฅผ ์จ๊ธฐ๊ณ ์ค์ํ ์ ๋ณด๋ง์ ๋ํ๋์ผ๋ก์จ ํต์ฌ์ ์ง์คํ๊ฒ ํ๋ ๊ฐ๋
์ถ์ํ์ ํ์์ฑ
- ๋ณต์ก์ฑ ๊ฐ์ : ๋ถํ์ํ ์ ๋ณด๋ฅผ ์จ๊ธฐ๊ณ ์ค์ํ ์ ๋ณด๋ง์ ํํํจ์ผ๋ก์จ ๊ฐ์ฒด ๊ฐ์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์์
- ์ค๋ณต ๋ฐฉ์ง : ๊ณตํต์ ์ธ ์ฝ๋๋ฅผ ๋ณ๋ก๋ ๊ตฌํํจ์ผ๋ก์จ ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์
- ๋ณด์ํฅ์ : ํ๋ก๊ทธ๋จ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์จ๊น์ผ๋ก์จ ์ฝ๋ ๋ณด์์ ๋์์ด ๋จ
์ถ์ํ์ ์ ํ
- ๊ณผ์ ์ถ์ํ : ์์ธ ์ํ ๋จ๊ณ ๊ณ ๋ ค ์ ์ ์์ ์์ค์์ ์ํ ํ๋ฆ๋ง ๋จผ์ ์ค๊ณํ๋ ์๋ฆฌ
- ๋ฐ์ดํฐ ์ถ์ํ : ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ํํ ์ ์๋ ํํ์ผ๋ก ๋์ฒดํ๋ ์ค๊ณ ์๋ฆฌ
- ์ ์ด ์ถ์ํ : ์ ์ด ํ๋ฆ์ ๋ํํ ์ ์๋ ํํ์ผ๋ก ๋์ฒดํ๋ ์ค๊ณ ์๋ฆฌ
์ถ์ํ ๊ตฌํ ๋ฐฉ๋ฒ
- ์ถ์ ํด๋์ค
- ํ๋ ์ด์์ ์ถ์ ๋ฉ์๋๋ฅผ ํฌํจํ๋ ํด๋์ค
- ์ถ์ ๋ฉ์๋ ์ธ์ ์ผ๋ฐ ๋ฉ์๋๋ฅผ ํฌํจํ ์ ์์
- ์ธํฐํ์ด์ค
- ์ถ์ ๋ฉ์๋(์ธํฐํ์ด์ค ๋ฉ์๋)๋ง ์ ์ธํจ
- ์ธํฐํ์ด์ค ๋ฉ์๋ ์ธ์ ์ผ๋ฐ ๋ฉ์๋๋ ํฌํจํ ์ ์์
์ถ์ ํด๋์ค ์ ์
- ํ๋ ์ด์์ ์ถ์ ๋ฉ์๋๋ฅผ ํฌํจํ๋ ํด๋์ค๋ฅผ ์๋ฏธํ๋ฉฐ abstract ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํ๊ณ ์ผ๋ฐ ๋ฉ์๋๋ฅผ ํฌํจํ ์ ์์
- ์ถ์ ๋ฉ์๋๋ ๋ฉ์๋์ ์ ์ธ๋ง ์๊ณ abstract ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ฉฐ ์ค์ ๊ตฌํ์ ์์ ๋ฐ์ ์์ ํด๋์ค์์ ์ด๋ฃจ์ด์ง
abstract class Car {
protected String brand;
protected String model;
public abstract void drive();
}
public class ElectricCar extends Car {
public void drive() {
System.out.println("์ ๊ธฐ์ฐจ ์ฃผํ");
}
}
์ถ์ ํด๋์ค ํ์์ฑ
- ์ถ์ ํด๋์ค์์ ์ถ์ ๋ฉ์๋๋ฅผ ์ ์ธํ๊ณ ์์ ํด๋์ค์์ ์ฉ๋์ ๋ง๊ฒ ์ฌ์ ์ํจ์ผ๋ก์จ, ๋คํ์ฑ์ ๊ธฐ๋ฐ์ด ๋๋ฉฐ ์ฝ๋ ์ฌ์ฌ์ฉ์ ๋์์ ์ค
- ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ ์ ์ดํดํ ์ ์๊ณ ์ถ์ํ๋ฅผ ์คํํ ์ ์์ผ๋ฉฐ, ํ๋ก๊ทธ๋จ์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ณ ๊ตฌ์กฐ๋ฅผ ๋์ฑ ์กฐ์งํํ ์ ์์
- ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๊ณ ํ๋ก๊ทธ๋จ์ ์ ์ง๋ณด์์ ๋์์ ์ค
์ถ์ ํด๋์ค ์ฃผ์์ฌํญ
- ์ผ๋ฐ ๋ฉ์๋ ์ธ์ ์ถ์ ๋ฉ์๋๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ๋ฐ๋์ ์ถ์ ํด๋์ค๋ก ์ ์ธํด์ผ ํจ
- ์ถ์ ํด๋์ค์์ ์ถ์ ๋ฉ์๋๋ฅผ ์ ์ธํ๋ฉด ์์ ํด๋์ค์์ ํด๋น ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํจ
- ์ถ์ ํด๋์ค๋ ์์ ์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง ์ ์์
- ์์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋, ์ปดํ์ผ๋ฌ๋ ์ถ์ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํจ
'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] List ์ Set ์ปฌ๋ ์ (0) | 2024.01.15 |
---|---|
[Java] Collection ์ปฌ๋ ์ (0) | 2024.01.15 |
[Java] ํ์ผ ์ ์ถ๋ ฅ (1) | 2024.01.09 |
[Java] ํจํค์ง (package) (0) | 2024.01.08 |
[Java] ์ถ์ํ์ ์ธํฐํ์ด์ค (1) | 2024.01.08 |