์ค๋์ ์ธํฐํ์ด์ค์ ๊ดํด์ ๊ณต๋ถํด๋ณด์.
๋ณธ์ธ์ ๊ฐ์ธ์ ์ผ๋ก ์ธํฐํ์ด์ค๊ฐ ๋ง์ด ์ค์ํ ๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์๋ํ๋ฉด ์๋ฐ์์ ๋ฐฐ์ฐ๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๋ค์ด ํ ๊ณณ์ ๋ชจ์ฌ ๋ชจ๋ ํ์ฉ ๋๋ ๊ณณ์ด ๋ฐ๋ก
์ด ์ธํฐํ์ด์ค๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ์์ ๊ฐ๋ ๋ค์ ์ดํดํ๊ณ ์์ง ๋ชปํ๋ค๋ฉด ์ธํฐํ์ด์ค๋ฅผ ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๋ค๋ ๋ง์ด ๋๊ธฐ๋ ํ๋ค
๊ทธ๋ผ ์ฐ์ ์ธํฐํ์ด์ค์ ๊ฐ๋ ์ ์์๋ณด๊ณ ์ธํฐํ์ด์ค์ ๊ตฌํ๊ณผ ์ ์ธ ๋ฐฉ๋ฒ์ ์์๋ณธ ํ์,
๊ธฐ๋ณธ์ ์ธ ์์๋ก ์ธํฐํ์ด์ค๋ฅผ ์ดํดํด๋ณด์.
์ธํฐํ์ด์ค๋?
--->
์ธํฐํ์ด์ค๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ด๋ถ์ ์ธ๋ถ์ ์ ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ์ฆ ๊ณ์ฝ ํน์ ์ฝ์์ด๋ค.
์๋ฅผ ๋ค์ด์ ๋ด๊ฐ ์ด๋ค ํฐ๋น๋ฅผ ๋ง๋ ์ฌ๋์ด๋ผ๊ณ ์น์. ๊ทธ๋ ๋ค๋ฉด ์์ ์๋ ๊ทธ๋์๊ณ ์์ผ๋ก๋ ๊ทธ๋ด ๊ฒ์ฒ๋ผ
ํฐ๋น์๋ ์ ์ ๋ฒํผ์ด ์๋ค. ์ฌ์ฉ์๋ ์ด ์ฌ์ค์ ๋น์ฐํ ์๊ณ ์์ ๊ฒ์ด๋ค.
๋ฐ๋ก ์ด์ฒ๋ผ ์๋ก๊ฐ ์๊ณ ์๋ ๊ณ์ฝ ํน์ ์ฝ์์ ์ธํฐํ์ด์ค๋ผ๊ณ ์๊ฐ ํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์ ์๋ฐ์์์ ์ธํฐํ์ด์ค๋ฅผ ์์๋ณด์
์ธํฐํ์ด์ค๋ ์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ถ์ ๋ฉ์๋์ ์์๋ง์ ๊ฐ์ง๋ค(JDK ๋ฒ์ ์ด ์งํํ๋ฉด์ ์ผ๋ฐ ๋ฉ์๋๋ ๊ฐ๋ฅํจ)
๊ทธ ์ด์ ๋ ๊ฐ๊ณผ ๊ธฐ๋ฅ์ ์ผ๊ดํ ์ํค๋ ๋ฐ์ ๋ชฉ์ ์ ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ์ธํฐํ์ด์ค๋ ์์ฑ์๋ฅผ ๊ฐ์ง์ง ์๊ณ , ํด๋์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒดํ๋ ๋ถ๊ฐ๋ฅํ๋ค.
* ์ธํฐํ์ด์ค๋ ํ๋์ ์ฌ์ฉ์ ์ ์ ํ์ ์ด๋ค
์ด์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
--->
interface ์ธํฐํ์ด์ค๋ช
{
์์
์ถ์๋ฉ์๋
}
๋ณด์๋ค์ํค class๊ฐ ์จ์ ธ์ผํ ์๋ฆฌ์ interface ๊ฐ ์์ฑ๋์ด ์๋ค.
* ์ถ์๋ฉ์๋๋ฅผ ํตํด ์ค์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๋ชฉ์ ์ด ์๋
ํ์์ ํต์ผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ธํฐํ์ด์ค์ ๋ฉค๋ฒ๋ฅผ ์ดํด๋ณด๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ๋๋ค.
1. ์ธํฐํ์ด์ค์ ๋ชจ๋ ๋ณ์๋ public static final์ด๋ค
2. ์ธํฐํ์ด์ค์ ๋ชจ๋ ๋ฉ์๋๋ public abstract์ด๋ค
๊ทธ๋ ๋ค๋ฉด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
===> ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๊ณ ๊ตฌํ์ ํ๋ฉด๋๋ค.
๋ฐ๋ก "implements ๋ผ๋ ํค์๋๋ก ๋ง์ด๋ค.
class ํด๋์ค๋ช
implements ์ธํฐํ์ด์ค๋ช
{
์ถ์๋ฉ์๋ ๊ตฌํ(๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ)
}
* ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ ํด๋น ์ธํฐํ์ด์ค์
์ถ์ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ฐ์ ์ฑ์ ๊ฐ์ง๋ค
* ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ ํด๋น ์ธํฐํ์ด์ค์ ํ์
์ ๊ฐ์ง๋ค
์ธํฐํ์ด์ค => ์์ํ์
๊ตฌํ ํด๋์ค => ํ์ํ์
๊ทธ๋ผ ๋๋์ฒด ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๊ฑธ๊น? 4๊ฐ์ง์ ๊ฐ๋จํ ์ด์ ๊ฐ ์๋ค.
1. ์ค์ ๊ตฌํ ํด๋์ค์ ๋ด์ฉ์ ์์ง ๋ชปํด๋
๊ฐ๋ฐ ์ฝ๋๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค(์ ๋ณด ์๋)
2. ๊ตฌํ ํด๋์ค๋ค์ด ๋
๋ฆฝ์ ์ผ๋ก ๊ตฌํ๋๊ณ ์ฌ์ฉ๋ ์ ์๋ค(๋ชจ๋ํ)
3. ์ฌ๋ฌ ํด๋์ค์ ๋ฉค๋ฒ์ ์ผ๊ด๋ ๊ท๊ฒฉ์ ์ ๊ณตํ ์ ์๋ค(ํ์คํ)
4. ํด๋์ค๋ค์ ๊ทธ๋ฃนํ ์ํฌ ์ ์๋ค(๋ง์ปค ์ธํฐํ์ด์ค)
*** ์ถ์ํด๋์ค : ์ถ์ํ์ ๋ชจ๋ํ์ ์ค์
์ธํฐํ์ด์ค : ์ ๋ณด ์๋๊ณผ ๋ชจ๋ํ์ ์ค์
***์ฐธ๊ณ ๋ก ์ธํฐํ์ด์ค์ ์์๊ณผ ๊ตฌํ์ ๋ณ๊ฐ์ด๋ค. ์ฆ, ์์๊ณผ ๊ตฌํ์ด ๋์์ ์กด์ฌํ ์
์๋ค๋ ์๋ฏธ์ด๋ค.(extends ํค์๋์ implements ํค์๋ ๋์์ ์ฌ์ฉ ๊ฐ๋ฅ)
์ฆ, ์ ๋ฆฌํ์๋ฉด ํด๋์ค๋ ๋จ์ผ ์์๋ง ๊ฐ๋ฅํ๊ณ
์ธํฐํ์ด์ค๋ ์์๊ณผ ๊ตฌํ์ด ๋์์ ๊ฐ๋ฅํ๋ค.
๋ํ!! ํด๋์ค๋ ๋ค์ค ๊ตฌํ์ด ๊ฐ๋ฅํ๊ณ
์ธํฐํ์ด์ค๋ ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ค!
===> ์ด๊ฒ ๋ฌด์จ ๋ง์ด๋ ๋ง์ธ๊ฐ? ์์์ ๋ค์ค์ผ๋ก ์๋๋ค๊ณ ๋ฐฐ์ฐ์ง ์์๋? ๊ทธ ์ด์ ๋ ๋ฐ๋ก ๋ชจํธ์ฑ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์๊ฐํด๋ณด์. ์ธํฐํ์ด์ค๋ ๊ฒฐ๊ตญ ์๋ก์ด ํด๋์ค๊ฐ ๊ตฌํ์ ํด๋ด๋ ๊ฒ์ธ๋ฐ, ์์ ๋๋ ๊ฒ์ด ๋ง๋ค๊ณ ํด์ ๋ฌธ์ ๊ฐ ๋๋?
์๋ก์ด ํด๋์ค๊ฐ ์ด์ฐจํผ ์ฌ๊ตฌํ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ชจํธ์ฑ์ด ๋ฐ์ํ์ง ์๋๋ค. ์ฆ, ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ค.
๋ํ, ์ฌ๋ฌ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ํ๋์ ํด๋์ค๊ฐ ์ฌ๋ฌ๊ฐ ๊ฐ์ ธ์จ๋ค๊ณ ํด์ ๋ฌธ์ ๊ฐ ๋๋? ์ด๊ฒ๋ํ ์ฌ์ ์๋ฅผ ์ง์ ํด์ฃผ๋ฉด์
๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ชจํธ์ฑ์ด ๋ฐ์ํ์ง ์๋๋ค ์ฆ, ๊ฐ๋ฅํ๋ค!!
ํ๋ฒ ๋ ๋ณด๊ธฐ ์ข๊ฒ ์ ๋ฆฌํด์ค๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ชจํธ์ฑ
์๋ฐ๋ ๋ชจํธ์ฑ๋๋ฌธ์ ํด๋์ค์ ๋ค์ค ์์์ ์ง์ํ์ง ์๋๋ค
๋ชจํธ์ฑ => ์ฌ๋ฌ๊ฐ์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์ ๋ฐ์ ๊ฒฝ์ฐ, ํด๋น ๋ถ๋ชจ ํด๋์ค์
๊ฐ์ ๋ฉ์๋๊ฐ ์กด์ฌํ๋ค๋ฉด ์์ ํด๋์ค์์ ์ด๋ค ๋ฉ์๋๋ฅผ ํธ์ถํ ์ง ๊ฒฐ์ ์ง์ง ๋ชปํ๋ค
์ด๋ฐ ๋ถ๋ถ์ ๋ชจํธ์ฑ์ด๋ผ๊ณ ํ๋ค
* ์ธํฐํ์ด์ค๊ฐ ๋ค์ค๊ตฌํ์ด ๋๋ ์ด์
์ธํฐํ์ด์ค๋ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์ฌ๋ฌ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด๋
๊ฒฐ๊ตญ ํด๋น ๋ฉ์๋์ ๊ตฌํ์ ํด๋์ค๊ฐ ๊ฒฐ์ ์ง๋๋ค ๊ทธ๋ฌ๋ฏ๋ก ๋ค์ค๊ตฌํ์ ํตํด
๋ชจํธ์ฑ์ด ๋ฐ์ํ์ง ์๋๋ค
* ์ธํฐํ์ด์ค๊ฐ ๋ค์ค์์์ด ๋๋ ์ด์
์ธํฐํ์ด์ค๋ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋ฉ์๋์ ๊ตฌํ์ด ์์ด
์ฌ๋ฌ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์๋ ๋ชจํธ์ฑ์ด ๋ฐ์ํ์ง ์๋๋ค
๋งค์ฐ ์ค์ํ ๋ด์ฉ์ด๋ค.
์ฐ์ ๊ฐ๋ ์ ์ผ๋ก ์ผ๋จ ๊ฐ๋ฅํ๋ค๋ ๊ฒ๋ง ์ด๊ณณ์์ ์ค๋ช ํ๊ณ
๋ค์ค ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์์ ์ ์ค๋ช ์ ๋ค์ ๊ธ์์ ์ค๋ช ํ๊ฒ ๋ค.
๊ทธ๋ผ ์ด์ ์ธํฐํ์ด์ค์ ๋ํ ๊ฐ๋ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค ์์์ผ๋ ์์ ๋ฅผ ํ์ธํด๋ณด์.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ ๋ฅผ ํ๋ ๊ฐ์ ธ์๋ค.
์ฐ์ ์ธํฐํ์ด์ค InterA๋ฅผ ๋ง๋ค์๋ค.
๊ทธ ๋ฉค๋ฒ๋ก๋ ์์์ด๊ธฐ ๋๋ฌธ์ DATA1 = 10;์ผ๋ก ์ ์ธํ์๊ณ
์จ์ ธ์์ง ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก public static final int๋ก ์์ฑ๋ ๊ฒ์ด๋ค.
๋ฉ์๋๋ ์ถ์๋ฉ์๋๋ก void method1();์ด ์ ์ธ๋์ด์๊ณ
์ด ๋ํ ์จ์ ธ์์ง ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก public abstract void method1();์ธ ๊ฒ์ด๋ค.
์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์์ผ๋ ์ด์ ๊ตฌํํด๋ณด์.
public class ClassA implements InterA ๋ฅผ ๋ณด๋ฉด InterA๋ฅผ ๊ตฌํํฉ๋๋ค~ ๋ผ๋ ์๋ฏธ์ด๋ค.
์๋ณด๋ฉด ์ถ์๋ฉ์๋์๋ ๋ฉ์๋๋ค์ ์ฌ์ ์ ํด์ฃผ๊ณ ์๋ค. ์๋ํ๋ฉด ๊ฐ์ ์ฑ์ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌด์กฐ๊ฑด ๊ตฌํํ๋ ค๋ฉด ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ์ฌ ๋ฉ์๋์ ๋ด์ฉ์ ๋ง๋ค์ด์ค์ผ๋ง ํ๋ค.
๋ฐ์ method3์ ์ผ๋ฐ๋ฉ์๋์ด๋ค.
์ฌ์ค ์ด์ ์ฝ๋ ๋ด์ ์ค๋ช ์ด ์จ์ ธ์๋ฏ์ด ์์๋ static์ด ๋ถ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ์ ์ธ ์ธํฐํ์ด์ค์ ์ ์ธ๊ณผ ๊ตฌํ์ ์์๋ณด์๋ค.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ด์ง๋ง ์์ธํ๊ฒ ์์๋์ด์ผ ์ฌํ๋๋ ์ธํฐํ์ด์ค์ ๋ด์ฉ์ ์ดํดํ ์ ์๋ค.
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง!
'์ธ์ด > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA : ์ธํฐํ์ด์ค2(Interface) (5) | 2024.09.08 |
---|---|
JAVA : ์ถ์ ํด๋์ค ์์2 (0) | 2024.08.29 |
JAVA : ์ถ์ ํด๋์ค ์์1 (0) | 2024.08.29 |
JAVA : ์ถ์ ํด๋์ค์ ์ถ์ ๋ฉ์๋ (0) | 2024.08.29 |
JAVA : ํ๋ณํ ๋ฐ ์บ์คํ ์ฐ์ต (2) | 2024.08.28 |