๋ถ๊ฐ๋ฅํ ๊น??
Animal ํด๋์ค ํ์์ Cat, Dog ํด๋์ค๊ฐ ์๊ณ , ์ฌ๊ธฐ์ ์๋ ์์ํจ์ Eat์ ๋ฐ๋ณต๋ฌธ ๋ฑ์ผ๋ก ์ผ๊ด์คํํ๊ณ ์ถ์ ์ํฉ์
IEnumerable<Task> tasks = animals.Select(animal => animal.Eat());
์ด๋ ๊ฒ ์์ฑํ๋ฉด Eat์ด Cat, Dog์ Eat๊ฐ ์๋ Animal์์ ๊ฐ์ํจ์๋ก ์ ์ํ Eat์ด ์คํ๋จ.
1. ๊ทผ๋ณธ์ ์ธ ์์ธ์ animals ๋ฆฌ์คํธ์ ์์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ง์ด๋ฃ์๋ ๋ถ๋ชจ ํด๋์ค์ธ Animal๋ก ํ๋ฒ ์บ์คํ ํด์ ๋ฃ์๊ฒ ์์ธ์ผ๋ก ์ถ์ ๋จ
๋ค๋ง ์ฌ๋ฌ ํด๋์ค๋ฅผ ํ ๋ฆฌ์คํธ๋ก ๊ด๋ฆฌํ๊ณ ๋ฐ๋ณต์ ํ๋๋ก ๋๋ฆฌ๋ ค๋ฉด ์ด์ฉ ์๊ฐ ์๋ค๊ณ ์๊ฐ๋๋๋ฐ. ์ด ๋ถ๋ถ์ ์์ด๋์ด๊ฐ ์์๊น?
2. ํจ์๋ฅผ ์์ ๊ฐ์ํจ์(์ถ์ํจ์)๋ก ๋ง๋ค ๊ฒฝ์ฐ
์ด๋ด๊ฒฝ์ฐ ๋ถ๋ชจ์ ํจ์ ์ ์๋ถ ์์ฒด๊ฐ ๋น์ด์๊ฒ ๋๋ ์์ํด๋์ค์ ํจ์๋ฅผ ์ฐพ์์ ์คํํ๋๊ฒ ๊ฐ๊ธด ํ๋ฐ
๊ฐ ์์ ํด๋์ค์์์ ์ฌ์ ์๊ฐ ๊ฐ์ ๋๊ณ ๋ง์ฝ Animalํด๋์ค์์ ๊ธฐ๋ณธ๋์์ ์ ์ํ๊ณ ์ถ์ด๋ ํ ์๊ฐ ์์ (์ฌ์ค ๋ ผ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ํ ์๋ ์์)
๋ค๋ง ์ฌ์ ์๊ฐ ๋งค์ฐ ๋๋ฌผ๊ฒ ์ผ์ด๋๋ ์ค๊ณ์ ํจ์๋ฅผ ์ถ์ํจ์๋ก ๋ง๋ค๊ณ ์ถ์ง๋ ์์.
super๋ก ์ฝํ๋ฉด๋๋๋ฐ
1. animal์ ์์๋ฐ์ ๊ฐ์ฒด๋ฉด ๊ทธ๋ฅ ์ง์ด๋ฃ์ด๋ ๋ค์ด๊ฐ์ง 2. virtual๋ ๊ธฐ๋ณธ๋์ ์ ์ ๊ฐ๋ฅ
๊ทธ๋ฅ ์ง์ด๋ฃ์ผ๋ฉด ์ฌ์ ์๋ ์์ํจ์๋ฅผ ์คํํจ
1. ์บ์คํ ํ๋ค๋๊ฒ ๋ด๊ฐ ํ๋ค๋๊ฒ ์๋๋ผ ๊ทธ๋ฅ ์ง์ด๋ฃ์ด์(์์์ ์ผ๋ก) ๋๋ค๋ ์๋ฏธ์์ ใ 2. ๋ถ๋ชจ ํจ์๋ virtual๋ก ์ ์ธ,์ ์๋ ์ํ ๊ทผ๋ฐ ๋ฐ๋ณต์ ๋๋ฆฌ๋ฉด ์ฌ์ ์๋ ์์ํจ์๊ฐ ์๋ ๋ถ๋ชจํจ์๊ฐ ์คํ๋๋๋ฐ..? Select๋ถ๋ถ์ foreach๋ก ํ์ด๋ ๋ง์ฐฌ๊ฐ์ง ํน์๋ ํ๋๋ง์ด์ง๋ง C# ๊ธฐ์ค์
override ํ๊ฑฐ ๋ง์?
๊ฐ์ํจ์๋ฉด Animal๋ก ์บ์คํ ํด๋ ๋์ ๋ฐ์ธ๋ฉ ์ผ์ด๋์ ์์ํจ์ ๋์ค๋๊ฒ ๋ง๋๋ฐ ์ธ ๊ทธ๋ฐ๋ฌธ์ ๊ฐ ์ ๊ธฐ๋ ๊ฒ์ธ์ง ์ดํด๊ฐ ์๋๋ ๋์ค
ํ์ ์ง๋ ฌํ ๊ด๋ จ ๋ฌธ์ ์ธ๊ฑฐ๊ฐ๋ค... ์ ๋ฐ๋ณต์ ๋๋ฆฌ๋ animals๋ฆฌ์คํธ๋ฅผ ๋ฐํ์์ ์๋ก ๋ง๋๋๊น ์ ์์๋ํจ; ๊ทผ๋ฐ ๋์ฒด ์ ์ด๋ฐ์ผ์ด ์๊ธฐ๋๊ฑด์ง ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ ๋์ค
์๋ํฐ๋ชจ๋์์ OnValidate()๋ก ๋ฐ๋ณต์ ๋ฆฌ์คํธ ๋ง๋ค์ด์ ๋ฏธ๋ฆฌ ์ง๋ ฌํํด๋๋ฉด ๋ฐ๋ณต๋ฌธ ๋๋ฆด๋ ๋ถ๋ชจํจ์๊ฐ ํธ์ถ๋๊ณ , ๋๊ฐ์ ์ฝ๋๋ฅผ ๋ฐํ์์ ๋๋ ค์ ๋ฐ๋ณต์๋ฅผ ์๋ก ๋ง๋ค๋ฉด ์๋ํ ๋๋ก ์์ ํจ์๊ฐ ํธ์ถ๋๋๋ฐ ์ด๊ฑฐ ๋์ฒด ์์ด๋ฌ๋๊ฑฐ์