Java

์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Interface(์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ํ™œ์šฉํ•˜๊ธฐ

567Rabbit 2024. 6. 3. 15:48

Interface์˜ ์‚ฌ์šฉ ๋ชฉ์ ๊ณผ ์ •์˜

 

- ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ๊ฐ•์ œํ•  ๋•Œ,

  ์ฆ‰ ์ผ๊ด€๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋“ค์„ ๋‹ค๋ฃฐ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

- ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ์˜ ๋ชฉ๋ก์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

 

- ๋ฉค๋ฒ„๋ณ€์ˆ˜๊ฐ€ ์ƒ์ˆ˜์™€ ํ•จ์ˆ˜(๋ฉ”์†Œ๋“œ)๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ์–ด์•ผ interface๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์ฆ‰, ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋  ๋•Œ ์ดˆ๊ธฐํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ดํ›„ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋‹ค

 

 

 

- ์ƒ์ˆ˜(constant)๋ž€?

 

: ํ•œ๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉด, ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์‚ฌ์šฉ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

: ์ฆ‰ ํ•œ๋ฒˆ ์ €์žฅํ•˜๋ฉด ๋‹ค๋ฅธ๊ณณ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด ์•ˆ๋œ๋‹ค.

 

: ์ƒ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑ๋œ๋‹ค.

 

 

 

 

Interface ์‚ฌ์šฉํ•˜๊ธฐ

 

 

์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์œผ๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด interface๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

Card์™€ Player๋ฅผ class๊ฐ€ ์•„๋‹Œ interface๋กœ ์ˆ˜์ •ํ•ด์ค€๋‹ค.

 

 

Card ํด๋ž˜์Šค๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€๊ฒฝ

 

Player ํด๋ž˜์Šค๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€๊ฒฝ

 

 

 

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 ๋˜ํ•œ ํ˜‘์—…์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค.