C# ์ธํฐํ์ด์ค์์
public interface IFlip
{
ย ย ย ย public bool CanFlip { get; protected set; }
}
์ ๊ฐ์ด ์ธํฐํ์ด์ค ๋ด๋ถ์ ํ๋กํผํฐ๋ฅผ ์ ์ธํ๋ค๊ณ ๊ฐ์ ํ์ ๋
์ ํ๋กํผํฐ์ setter๋ฅผ ๊ทธ๋ฅ protectedํ๊ฒ ํ ์ ์๋์?
์์ ๊ฐ์ด ๋๊ฒ ํ๋ ค๋ฉด
1. ์ธํฐํ์ด์ค๋ฅผ ๋ช ์์ ์ผ๋ก ๊ตฌํํ๋ค. -> ์ด๋ ๊ฒ ๋๋ฉด ์ ๊ทผ ์ (์ธํฐํ์ด์ค๋ช )์ผ๋ก ์บ์คํ ์ ํด์ผ ํด์ ์ด๋ ค์
2. get; ํจ์๋ง ์ธํฐํ์ด์ค์ ๋จ๊ธด๋ค -> ์ด๋ ๊ฒ ๋๋ฉด ์ธํฐํ์ด์ค ๋ด๋ถ ํจ์์์ ํด๋น ํ๋กํผํฐ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํจ
์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด์ ๋ค์ค ์์ ๋๋์ผ๋ก-์ ๋ํฐ์ ์ปดํฌ๋ํธ ์์คํ ์ฒ๋ผ ์ธํฐํ์ด์ค์ ํ์ํ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํ๊ณ ํด๋์ค์์ ํ์ํ ๋ถ๋ถ๋ง ๊ตฌํ์ ๊ฐ์ ํ๊ณ ์ถ์๋ฐ
๋ฐฉ๋ฒ ์ ๊ทผ์ด ์๋ชป๋์๋์?
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ธํฐํ์ด์ค์ ํจ์๊ฐ ํ๋ ์๋๋ฐ, ๊ทธ ํจ์๊ฐ CanFlip ํ๋กํผํฐ์ ์ด๋ค ๊ฒ์ ํ ๋นํ๋ค๋ฉด ์ธํฐํ์ด์ค ๋ด๋ถ์๋ Set์ด ์์ด์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ์๋ฆฌ์์ต๋๋ค
๊ทธ๋ฌ๋ฉด ์ง๊ธ ๋ด๊ฐ ์๋ํ ๊ฒ ์ฒ๋ผ ์ธํฐํ์ด์ค๊ฐ ํน์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ฒ ํ๊ณ , ํด๋์ค๊ฐ ์ด๋ฌํ ์ธํฐํ์ด์ค๋ค์ ๋ฐ์์ ๋์ํ๊ฒ ํ๋ ค๋ฉด Default interface methods๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ฐ๋ ๊ฒ ์ ๋ต์ธ๊ฐ? ์๋๋ฉด ์์์ด๋ ๊ธฐํ ๋ฐฉ๋ฒ์ ํตํด์ ์ด๋ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ฒ ํ ์๊ฐ ์์?
์ธํฐํ์ด์ค๋ฅผ ์ข ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ์ด์ ์ธ๋ ค๊ณ ํด์ ๊ทธ๋ฌ๋ ๋ณด๋ค์ ๊ฐ์ฌTV!!!!!!!
์ธํฐํ์ด์ค๋ ํจ์ ๊ตฌํ์ ํฌํจํ ์ ์๋๋ฐ?
๊ฐ๋ฅํด. C# 8.0 ์ด์๋ถํฐ ๋๋ ๊ฑธ๋ก ์๊ณ ์์
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods
default interface methods๋ผ๋๊ฒ ์์๊ตฐ..
์ ๋ํฐ๋ ์ ๋์ง๋ง ํ์ฅ ๋ฉ์๋ ์ฌ์ฉํ๋ฉด ๋น์ทํ๊ฒ ํ ์ ์๊ธด ํด