์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉ ํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?..
๋ฆ์์ง๋ง ๋๊ธ ๋ฌ์ ๋ด์. interface ๋ ์ค๊ณ์ ๊ฐ๋
์ผ๋ก ์๊ฐํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. 1. ์ธ๋ถ ์์คํ
์๊ฒ api ๊ณต๊ฐ ๋ด ์์ค๊ฐ ์๋ ์ธ๋ถ ์์คํ
์๊ฒ api ๊ณต๊ฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ interface class๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋จธ์ง๋ internal, private, protected ๋ฑ์ผ๋ก ์จ๊ธฐ๊ณ ์ธ๋ถ ๊ณต๊ฐํ๋ api ๋ง interface class ๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์
๋๋ค. 2. ํน์ฑ ๋ง๋ค ์์ interface๋ก ์ค๊ณ interface ๊ฐ class ์ ๋ค๋ฅธ์ ์ ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ค๋ ์ ์
๋๋ค. ์๋ ์๋ฅผ ์ฐธ๊ณ ํด ๋ณด์๋ฉด ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. [ํ๊ฒ]์ ํ๋ค, ๋ด๋ฆฐ๋ค, ์ ์งํ๋ค, ๋ฉ์ถ๋ค ๋ ๋์์ด ์์ต๋๋ค. [ํ๊ฒ] ์ [์๋์ฐจ], [์์ ๊ฑฐ], [์คํ ๋ฐ์ด]๊ฐ ํฌํจ๋ฉ๋๋ค. [์๋์ฐจ] ์ [์คํ ๋ฐ์ด] ๋ ์๋์ ๊ฑด๋ค ๋ ๋์์ด ์์ง๋ง [์์ ๊ฑฐ] ๋ ์๋์ ๊ฑธ์ง ์์๋ ๋์ง์. [์๋์ฐจ] ๋ ํ๋ค ๋ ๋์์ ์ํด ๋ฌธ์ ์ฐ๋ค, ๋ฌธ์ ๋ซ๋๋ค ๋ ๋์์ด ์ถ๊ฐ๋ก ํ์ํฉ๋๋ค. ํ์ง๋ง [์์ ๊ฑฐ] ์ [์คํ ๋ฐ์ด] ๋ [์์ฅ์ ์๋๋ค] ๋ ๋์๋ง ํ์ํฉ๋๋ค, ์ด๊ฑธ ์์ค๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ ๊ฒ ๊ฐ์ต๋๋ค. interface ํ๊ฒ { void ํ๋ค(); void ๋ด๋ฆฐ๋ค(); void ์ ์งํ๋ค(); void ๋ฉ์ถ๋ค(); } interface ์๋ { void ์๋์ ๊ฑด๋ค(); } interface ์์ฅ { void ์์ฅ์ ์๋๋ค(); } interface ๋ฌธ { void ๋ฌธ์์ฐ๋ค(); void ๋ฌธ์๋ซ๋๋ค(); } abstract class ์๋์ฐจ implements ํ๊ฒ, ์๋, ๋ฌธ { } abstract class ์คํ ๋ฐ์ด implements ํ๊ฒ, ์๋, ์์ฅ { } abstract class ์์ ๊ฑฐ implements ํ๊ฒ, ์์ฅ { } abstract class BMW์๋์ฐจ extends ์๋์ฐจ { } abstract class BMW์คํ ๋ฐ์ด extends ์คํ ๋ฐ์ด { } abstract class BMW์์ ๊ฑฐ extends ์์ ๊ฑฐ { }