ํ ํด๋์ค๊ฐ ์๋ค๊ณ ํ์๋ abstract ๋ฌ์๋๊ณ ํด๋์ค ๋ด์ ๋ฉค๋ฒํจ์๋ฅผ ์ ์๋ง ํ ๋ค์ ๋ด์ฉ์ ์๋ฃ์ด ๋์ผ๋ฉด ์ถ์ ํด๋์ค ์ธ๊ฑฐ ๊ฐ์๋ฐ
๋ฉค๋ฒ ํจ์ ์์ virtual ๋ฌ์๋๊ณ ์์ ์ค๋ธ์ ํธ์์ override๋ก ํจ์ ์์ ํ๋๊ฑฐ๋ ์ฐจ์ด๊ฐ ๋ญ์?
์คํ๋ ค virtual์์ base๋ก ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ ๋ฃ์ด๋๊ณ ์คํํ ์ ์๋ค๋ ์ ์์ ์คํ๋ ค ์ถ์ ํด๋์ค ๋ณด๋ค ์ข์๊ฑฐ ์๋๊ฐ?
์ฌ์ค ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค๋ ์ฐจ์ด๋ ์ ์ดํด ๋ชปํ๊ฒ ๋๋ฐ ์๊ฐํด๋ณด๋ ๋ฌด์กฐ๊ฑด ํจ์ ๋ด์ฉ์ ์์๋ฐ์ ํด๋์ค์์ ์ ํด์ค์ผ ํ๋ค๋์ ๋นผ๊ณ ๋
virtual override๋ ์ฐจ์ด๋ ์ ๋ชจ๋ฅด๊ฒ ์ ๋ญ๊ฐ ์ฝ๊ฒ ์ค๋ช
ํด ์ค ์ ์์? ์ฐพ์๋ด๋ ์ดํด๋ ฅ์ด ๋ธ๋ ค์ ๊ทธ๋ฐ์ง ์ ๋ชจ๋ฅด๊ฒ ๋๋ฐ
์ฌ์ค์ ์ฐจ์ด ์์ ๋ค๋ง ์ถ์ํด๋์ค๋ ๊ทธ ์์ฒด๋ก๋ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์ ์๋ค๋ ์ ์ฝ์ด ์์ด์ ์ธํฐํ์ด์ค์ฒ๋ผ ์ธ ์ ์์ง
๋ ๊ฐ๋ ์ ์๋ก ์ฐ๊ด์ด ์๋ ๊ฐ๋ ์ด์ง ๋ค๋ฅธ๊ฒ ์๋.. ์ ์ด์ ์ถ์ํด๋์ค๊ฐ ๋๊ธฐ ์ํด์๋ ์ต์ํ ํ๋ ์ด์์ ๊ตฌํ๋์ง ์์ virtual๋ก ์ ์ธ๋ pureํจ์๊ฐ ํ์ํจ. ์ด๋ฐ ๊ฒฝ์ฐ ํด๋น ํด๋์ค๋ ๊ตฌํ์ด ๋น ์ง ์ํ์ด๋ฏ๋ก ๊ฐ์ฒด ์์ฑ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํด์ง. ์ถ์ ํด๋์ค๋ผ๋๊ฒ ๋ณ๊ฒ ์๋๊ณ ๊ทธ๋ฅ ์ด๋ ๊ฒ ๊ทธ ์์ฒด๋ก ๋ฒ ์ด์ค ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฑธ ๋ง์๋ ๊ฑฐ๋ผ๊ณ ๋ณด๋ฉด๋จ.. ๊ณผ์ผ ํด๋์ค๋ฅผ ์ถ์ ํด๋์ค๋ก ๋ง๋ค์๋ค ์น๋ฉด ์ฌ๊ณผ, ๋ฐฐ, ๋ฐ๋๋ ๋ญ ์ด๋ฐ ํด๋์ค๋ค์ ๋ง๋ค์ ์์ํ ๋ฐ ์ค์ ๊ฐ์ฒด๋ก ์์ฑ์ '๊ณผ์ผ'๋ก๋ ํ์ง ๋ง๋ผ๋๊ฑฐ์ง
๋ญ๊ฐ ์ข์์ง๋ ๋๋ ์ ์ค๋ช ์ ๋ชปํ๊ฒ ๋๋ฐ ์ผ๋จ ์ด๋ค ์์ ๋ฐ๋ ํด๋์ค๊ฐ ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์กฐ๊ฑด ๊ตฌํํด์ผ ํ๋ ์ธํฐํ์ด์ค ๋ค์ด ์๋ ๊ฒฝ์ฐ์๋ ์ด๋ ๊ฒ ์์ ๊ฐ์ํจ์๋ก ๋ง๋ค์ด ๋๋ฉด ์ ์ด์ ์ปดํ์ผ ๋ถํฐ๊ฐ ์๋๋๊น ์ค์๋ก ๊ตฌํ์ ๋นผ๋จน์ ์ผ์ ์ค์ด๋ค๊ธด ํ์ง.. ๋ง์ฝ ์ด๋ฐ ๊ผญ ํ์ํ ํจ์๊ฐ ์์๊ฐ์ํจ์๊ฐ ์๋๋ผ ๋๊ฐ ๋งํ๋๋ก ๋์ถฉ ๋๋ฏธ๋ก ๋ง๋ค์ด๋ ํจ์๋ฉด ์์๋ฐ์์ ๊ตฌํํ ๋ ๋ญ ์๋ชปํ๋์ง ๋ชจ๋ฅธ์ฑ๋ก ํค๋ฉ ์ ์์ด
ํนํ ์๊ธฐ๊ฐ ๋ง๋ ํด๋์ค๊ฐ ์๋๋ผ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ ํด๋์ค ์ด๊ฑฐ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ฐ์ ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ญ๊ฐ ์์ ํ ๊ฒฝ์ฐ์๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋ด๊ฐ ๋ญ ์ต์ํ์ผ๋ก ๊ตฌํํด ์ค์ผ ๋์๊ฐ๋์ง ์ ๋งค๋ชจํธํ ๋๊ฐ ๋ง์๋ฐ ๋ฑ ํ์ํ ๊ฒ๋ค๋ง ์ธํฐํ์ด์ค ํํ๋ก ์ ๊ณตํด ์ฃผ๋ฉด ์ฌ์ฉํ๋ ์ ์ฅ์์ ๊ฝค๋ ์์ํด ์ง์ง
๊ทธ๋ฅ ๊ฐ๋ฐ์๋ค๋ผ๋ฆฌ์ ์ผ์ข ์ ์ฝ์์ ์์ํด๋์ค๋ค์ ์ฌ๋ฌ ๊ณตํต์ ์ธ ๋ถ๋ถ๋ค์ ํ๋๋ก ๋ชจ์ผ๋ ์ถ์์ ์ธ ๋ถ๋ถ์ด๋ ๊ฐ์ฒด์ ์ง์ ๋ฉ๋ชจ๋ฆฌํ ํ์ง ์๊ฒ ๋ค ๋ผ๋๊ฒ๋ฟ ์๋ฅผ ๋ค์ด ํผ์์ํฌ๋ ํํผ๋ก๋, ๋ถ๊ณ ๊ธฐ, ์น์ฆํผ์ ๋ฑ ๋ค์ํ ๋ฉ๋ด๊ฐ ์๊ณ ์ฌ๊ธฐ์ ์ถ๊ฐ๋ก ํ ํ์ ํฌ๋ฌ์คํธ ์ถ๊ฐํ๊ณ ๊ณ ๊ฐํํ ๋ฐฐ๋ฌํ์ง๋ง(์์ํด๋์ค ์ธ์คํด์ค) ์ด ํผ์๋ค์ ๊ณตํต์ ์ธ ๋ถ๋ถ์ธ ๋์ฐ๋ง ์ฉ์ผ๋ก ๊ณ ๊ฐํํ ๋ฐฐ๋ฌํ์ง ์์์ด? ํ์ง๋ง ๋ชจ๋ ํผ์๋ค์ ๊ณตํต์ ์ธ ๋ถ๋ถ์ด๊ณ
virtual override์ ์ฐจ์ด๋ virtual ์ ์ธํ ํจ์๋ฅผ ์์ํด๋์ค์์ ์ฌ์ ์ํด์ ์ธ ์ ์๊ฒ๋ ์ ์ธํ ํค์๋์ผ ๋ฟ์ด๊ณ override๋ ๋ด๊ฐ ์์๋ฐ์ ํด๋์ค์์ virtual์ด ๋ถ์ ํจ์๋ฅผ ์์๋ฐ์๋ค๋ ํค์๋์ C#์ override ํค์๋๋ฅผ ๋ฐ๋์ ๋ถ์ฌ์ค์ผํ๊ณ C++์ ์๋ถ์ฌ์ค๋ ๋๊ณ
์ธํฐํ์ด์ค๋ ์ค์ฒฉ์ผ๋ก ์์ ์ํฌ ์๊ฐ ์๋ค๋ ํน์ง์ด ์์ง. ๊ทธ๋์ ๋๋ ์์ดํ ์ ์ถ์ํด๋์ค๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๊ณ ์ฌ์ฉ์์ดํ ์ ๊ฒฝ์ฐ Iuse ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐ๋ก ์์์์ผ์ ์ฌ์ฉํจ.
์ถ์ํ ํด๋์ค๋ ์ผ๋ฐ ํด๋์ค๋ณด๋ค ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์์ ํจ์ฌ ์์ ๋กญ๋ค๋ ์ด์ ์ด ์์. ๋ํ ์ถ์ํ ํด๋์ค๋ ๊ฐ์ฒด ์์ฑ์ด ์๋๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ ๊ฐ์ฒด ์์ฑ์ ๋ฐฉ์งํ ์ ์๊ณ ์ผ๋ฐ ํด๋์ค์์๋ ๊ตฌํ์ ๊ฐ์ ํ๋ ๋ถ๋ถ์ด ์์. ๊ทธ๋์ ์ ์ง ๋ณด์์์ ์ถ์ํํด๋์ค๊ฐ ์ผ๋ฐ ํด๋์ค๋ณด๋ค ์์ ์ฑ์ด ๋์.
Chat GPTํํ ๋ถ๋ชจํด๋์ค๋ฅผ ์ผ๋ฐํด๋์ค๊ฐ ์๋ ์ถ์ํ ํด๋์ค๋ก ๋ง๋ค์ด์ผ ํ๋ ์ด์ ๋ฑ์ผ๋ก ๋ฌผ์ด๋ณด๋๊น ์ ์๋ ค์ฃผ๋ค
Item ์ ์ถ์ํ๋ก ๋ง๋ค๊ณ ์ฌ์ฉ์์ดํ ์ ๊ฒฝ์ฐ Iuse ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ณ ์๋ ๋ฌผ์ฝ์ ์์๋ฐ์ ๊ฐํ๋ ์๋๋ฌผ์ฝ์ ๊ฒฝ์ฐ ์๋ ๋ฌผ์ฝ๋ ๊ฐ์ฒด๋ก ์์ฑ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ๊ฒฝ์ฐ๋ ๊ฐํ๋ ์๋ ๋ฌผ์ฝ์ ๋ถ๋ชจ ํด๋์ค์ธ ์๋ ๋ฌผ์ฝ์ ์ผ๋ฐ ํด๋์ค๋ก ๋ง๋ค๊ฒ ๋์ง.
๋ ๋จธ๋ฆฌ๊ฐ ๋น์ํด์ virtual๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ฒ๋ค์ ํ์ ํ ์ ์์ผ๋ฉด virtual๋ก ๋ก์น ํด๋ ๋จ. ํ์ง๋ง ํ ํ๋ก์ ํธ๋ ํด๋์ค๊ฐ ๋ฌด์ํ๊ฒ ๋ง์์ง๋ฉด ์ ๊ทผ์ ํ์๋ก ํ์ ํ๋ ๊ฒ๋ ํ๊ณ๊ฐ ์๊ณ , override ํด์ผํ๋ ๊ฑธ ๊น๋จน์ ์๋ ์๋๋ฐ๋ค๊ฐ ์ด๋ค ์๋๋ก ํด๋น ๋ฉ์๋๋ฅผ virtual ํ๋์ง ํ์ ์ด ํ๋๋ abstract์ ์ ์ ํ ๋๋ ์ ์ฐ๋๊ฒ ์ข์. interface๋ abstract์ ๋์ผํ๋ฐ ๋๋ ํ ํด๋์ค์์ ์ฐธ์กฐํ ๋ ์ ๋งํด์๋ interface๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํจ. ์ํธ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๋๊ฒ๋ ํฐ ์ด์ ์ง๋ง ๋ค๋ฅธ ํํธ ๊ฐ๋ฐ์์๊ฒ ์ธํฐํ์ด์ค ๋ชฉ๋ก ๋์ ธ์ฃผ๊ณ '์ด๊ฒ๋ค ๊ตฌํํด์ฃผ์ธ์' ํ๋ฉด ํธํ๊ฑฐ๋