Interface์ ์ฌ์ฉ ๋ชฉ์ ๊ณผ ์ ์
- ์ธํฐํ์ด์ค๋ ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๊ฐ ๋์ผํ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋๋ก ๊ฐ์ ํ ๋,
์ฆ ์ผ๊ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์๋ก ๋ค๋ฅธ ํด๋์ค๋ค์ ๋ค๋ฃฐ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ์ธํฐํ์ด์ค๋ ํด๋์ค๊ฐ ๊ตฌํํด์ผ ํ๋ ๋ฉ์๋์ ๋ชฉ๋ก์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ๋ฉค๋ฒ๋ณ์๊ฐ ์์์ ํจ์(๋ฉ์๋)๋ก๋ง ์ด๋ฃจ์ด์ ธ์์ด์ผ interface๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ฆ, ๋ณ์๋ ์ ์ธ๋ ๋ ์ด๊ธฐํ๋์ด์ผ ํ๋ฉฐ, ์ดํ ๋ณ๊ฒฝ๋ ์ ์๋ค
- ์์(constant)๋?
: ํ๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด, ๊ทธ ๋ค์๋ถํฐ๋ ์ฌ์ฉ๋ง ํ ์ ์๋ค.
: ์ฆ ํ๋ฒ ์ ์ฅํ๋ฉด ๋ค๋ฅธ๊ณณ์์ ๋ฐ์ดํฐ๊ฐ์ ๋ฐ๊พธ๋ฉด ์๋๋ค.
: ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฌธ์๋ก ์์ฑ๋๋ค.
Interface ์ฌ์ฉํ๊ธฐ
์๋์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ ํด๋์ค๋ฅผ ์์๋ฐ์ผ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.

์ฌ๋ฌ ๊ฐ๋ฅผ ํจ๊ป ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด interface๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
Card์ Player๋ฅผ class๊ฐ ์๋ interface๋ก ์์ ํด์ค๋ค.


Card์ ๋ณ์์ ํจ์(๋ฉ์๋)๋ฅผ ์์ฑํด์ค๋ค.
package model;
public interface Card {
โ
โ//์์๋ก ๋ง๋ค๋ ค๋ฉด ๋๋ฌธ์๋ก๋ง, 'final'์ ๋ถ์ฌ์ ๋ง๋ ๋ค. ์์๋ heap์ด ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ์ Data ์์ญ์ ์ ์ฅ๋๋ค.
โ//๋ฉ๋ชจ๋ฆฌ ์์ญ์ด heap์ด ์๋๋ผ Data๋ก ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ static์ ์จ์ผํ๋ค.
โ
โpublic static final int CLOVER = 1;
โpublic static final int HEART = 2;
โpublic static final int DIAMOND = 3;
โpublic static final int SPADE = 4;
โ
โpublic static final String NAME = "Poker";
โ
โโโโโ//์ด๋ฏธ static์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ๋๋ฌธ์ ํจ์์์๋ static์ ์ฐ์ง ์์๋ ๋๋ค.
โpublic String getCardNumber();
โpublic void print();
โ
}
์์์ ์ค๋ช ํ static์ ์ฌ์ฉํด์ผ ํ๋ ๋ถ๋ถ์ด ์ดํด๊ฐ ์๋๋ค๋ฉด
https://codebunny99.tistory.com/123
์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ(Memory) ์์ญ ๊ฐ๋
1. ๋ฉ์๋ ์์ญ(Method Area) (= ๋ฐ์ดํฐ ์์ญ) - ๋ฉ์๋ ์์ญ์ ํด๋์ค ์ ๋ณด(ํด๋์ค ์ด๋ฆ, ๋ฉ์๋, ๋ณ์)์ ๊ฐ์ ๋ฐํ์ ์์ ํ์ ํฌํจํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.- Static ์์ญ์ด๋ผ๊ณ ๋ ํ๋ฉฐ ์ ์ญ๋ณ
codebunny99.tistory.com
๋ฅผ ์ฐธ๊ณ ํ์.
๋ค์์ผ๋ก, MyCard์์ ์ธํฐํ์ด์ค ๋ฐ์ ๊ฒ์ด๋ฏ๋ก, MyCard ํด๋์ค์์ implements๋ก Card, Player๋ฅผ ์์ฑํด์ค๋ค.
์ธํฐํ์ด์ค๋ ์์๊ณผ ์ค๋ณต์ผ๋ก๋ ์ฌ์ฉ๋ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ , ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ ๋ค๋ฅธ ์ธํฐํ์ด์ค์ ํจ์๋ฅผ Overriding(์ค๋ฒ๋ผ์ด๋ฉ) ํด์ฃผ๋ฉด, MyCard ํด๋์ค์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
GrandParent์์ ์์๋ฐ๊ณ ์ ํ๋ print() ํจ์ ๋ํ ์ค๋ฒ๋ผ์ด๋ฉ ํด์ฃผ์๋ค.

์ด์ฒ๋ผ Interface๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ Interface ๋ํ ํ์ ์ ์ํด์ ์ฌ์ฉํ๋ ๋๊ตฌ์ด๋ค.
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ(Java)์ ArrayList ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ (0) | 2024.06.03 |
---|---|
์๋ฐ์ ๋ฌธ์์ด(String) ๋ฐ์ดํฐ ๊ฐ๊ณตํ๊ธฐ (0) | 2024.06.03 |
์๋ฐ์ ์ถ์ํ(Abstract)์ ์ฉ๋์ ๋ฐฉ๋ฒ (0) | 2024.06.03 |
์๋ฐ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ(Method Overriding) ํ๋ ๋ฐฉ๋ฒ (2) | 2024.06.03 |
์๋ฐ ์์ Child(์๋ ) ํด๋์ค์ ์์ฑ์๋ฅผ ๋ง๋ค ๋ super ํจ์ ์ฌ์ฉํ๊ธฐ (0) | 2024.06.03 |