์ธํฐํ์ด์ค๋ ์ ํ์ํ๊ฐ์? ์ธํฐํ์ด์ค ์์์ด ํ์ํ ์ด์ ๋ ๋ฌด์์
๋๊น? ๋คํ์ฑ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์
๋๊น? ์ธํฐํ์ด์ค ์์ ๋ฐฉ๋ฒ์ ์ฝ๊ณ ์ดํดํ์ง๋ง ๊ทธ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํ ์ฌ๋๋ค์ ์ํ ๊ฒ์
๋๋ค. ์ง๋๋ฒ์๋ ์ผ๋ฐ์ ์ธ Ivanov ์ ํ๊ตฐ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐํ์ด์ค๊ฐ ํ์ํ ์ด์ ๋ฅผ ์ดํด๋ณด์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ณ ๋ฏผํ๋ ๊ฐ์กฑ์ ๋์งํธํ๋ฅผ ๊ณ์ํ๊ณ ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ ๋๊ตฌ์๊ฒ์๋ ๋ฌผ๋ ค๋ฐ์ง ์์๊ฑฐ๋ ๋๊ตฌ์๊ฒ๋ ๋ฌผ๋ ค์ฃผ์ง ์์ ์ต๊ด, ์ฆ ๊ฐ์ธ์ ์ธ ์ต๊ด์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ์๋ฌด๋ ๊ฐ ๊ฐ์กฑ ๊ตฌ์ฑ์์๊ฒ ๋
ํนํ ์ต๊ด์ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. Java ํ๋ฉด์ผ๋ก ์ด๋ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฌํ ํด๋์ค์๋ง ์ํ ํด๋์ค์ ๊ณ ์ ํ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค. ๊ธ์์! ํํธ์ผ์
๋๋ค:
class ะะตัั implements ะัะธะฒััะบะธะะฐะฟั, ะัะธะฒััะบะธะะฐะผั {
//ััะพ ะปะธัะฝัะต ะะตัะธะฝั ะฟัะธะฒััะบะธ
public void ะบะพะฒัััััะะะพัั () {
System.out.println("ะะพะฒััั-ะบะพะฒััั");
}
//ััะพ ัะฝะฐัะปะตะดะพะฒะฐะฝะฝัะต ะฟัะธะฒััะบะธ
@Override
public void ะฟัะธั
ะปัะฟัะฒะฐัั() {
System.out.println("ะฅะปัะฟ");
}
@Override
public void ะฟะพะดะถะธะผะฐัั () {
System.out.println("ะะพะดะถะฐัั ะณัะฑะบะธ");
}
}
์ด ์ฌ๋์ ์๋น ์
๋๋ค:
class ะะฐะฟะฐ implements ะัะธะฒััะบะธะะฐะฟั {
//ััะพ ะปะธัะฝัะต ะะฐะฟะธะฝั ะฟัะธะฒััะบะธ
public void ัะตัะฐััะะพัะพะดั () {
System.out.println("ะงะตัั ะฑะพัะพะดั");
}
//ััะพ ะฟะตัะตะดะฐะฝะฝัะต ะฟัะธะฒััะบะธ
@Override
public void ะฟัะธั
ะปัะฟัะฒะฐัั() {
System.out.println("ะฅะปัะฟ");
}
}
์ด๋ถ์ ์๋ง์์:
class ะะฐะผะฐ implements ะัะธะฒััะบะธะะฐะผั{
//ััะพ ะปะธัะฝัะต ะะฐะผะธะฝั ะฟัะธะฒััะบะธ
public void ั
ะปะพะฟะฐััะ ะตัะฝะธัะฐะผะธ () {
System.out.println("ะฅะปะพะฟ-ั
ะปะพะฟ");
}
//ััะพ ะฟะตัะตะดะฐะฝะฝัะต ะฟัะธะฒััะบะธ
@Override
public void ะฟะพะดะถะธะผะฐัั() {
System.out.println("ะะพะดะถะฐัั ะณัะฑะบะธ");
}
}
์๋ฒฝํ! ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค! ์ฒซ ๋ฒ์งธ ๊ธฐ์ฌ์์๋ ์ด ํ๋ก๊ทธ๋จ์ด ํ์ค ์ธ๊ณ๋ฅผ ๋ฐ์ํ๋ค๊ณ ๋ฐํ์ต๋๋ค. ํ์ค์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ํน์ฑ์ ๊ทธ๊ฒ์ด ํญ์ ๋ณํ๋ค๋ ๊ฒ์
๋๋ค. Ivanov ๊ฐ์กฑ๋ ์์ธ๋ ์๋์๊ณ Masha๋ผ๋ ๋ฌ์ฝคํ ๋ธ์ด์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋
๋ ์๋ง๋ก๋ถํฐ ์๋์น์ ๋๋๋ฆฌ๋ ์ต๊ด, ์๋น ๋ก๋ถํฐ ํ์ฉ์ด๋ ์ต๊ด์ ๋ฌผ๋ ค๋ฐ์์ต๋๋ค. ์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ์, ๊ทธ๋ ๊ฒ ์ด๋ ต์ง๋ ์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋
ผ๋ฆฌ์ ์ผ๋ก ์๊ฐํ๋ ๊ฒ์
๋๋ค. ๊ฒฐ๊ตญ ์ธํฐํ์ด์ค๊ฐ ํ์ํ ์ด์ ๋ ๋ชจ๋๊ฐ ์๊ณ ์์ต๋๋ค. ์ด์ Masha's Habits์ ๋ํ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ clapElashes() ๋ฐ squish() ๋ฉ์๋๋ฅผ ์ค๋ช
ํ๊ณ ์ด๋ฅผ Masha ์ ๊ตฌํํ๋ฉด ์๋ฃ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋๊ฐ ์ด๋ฏธ ๋ค๋ฅธ ์ธํฐํ์ด์ค์ ๊ตฌํ๋์ด ์๋ ๊ฒฝ์ฐ ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค. ์ค์ ๋ก Ivanov ๊ฐ์กฑ์ด ์ด๋ค ๊ณํ์ ๊ฐ์ง๊ณ ์๋์ง ๋๊ฐ ์๊ฒ ์ต๋๊น? Seryozha๊ฐ ํ์ด๋ ๊ฒฝ์ฐ ์๋น , ์๋ง, ์ฆ์กฐํ ์๋ฒ์ง ๋ฐ 4์ธ๋ ๋ค๋ฅธ ๋๊ตฐ๊ฐ ๋ก๋ถํฐ ์ต๊ด์ ๋ฌผ๋ ค๋ฐ์ ๋๋ง๋ค ๋ค์๊ณผ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค. Seryozha์ ์ต๊ด ์ธํฐํ์ด์ค , ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ ๋ค๋ฅธ ์ธํฐํ์ด์ค์์ ์ด๋ฏธ ์๋ฐฑ ๋ฒ ์ ์ธํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ์ธํฉ๋๊น? 2~3์ธ๋ ์์ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ค๋ฅธ ์ธํฐํ์ด์ค์ ์ค๋ช
๋์ด ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋์ผํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๊ฒ ๋ ์ํ์ด ์์ผ๋ฉฐ, ์ผ๋ถ ์ต๊ด์ ์ด๋ฆ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ(์ด๋ ์๋นํ ๊ฐ๋ฅํฉ๋๋ค. ๊ฒฐ๊ตญ ์ธ์์ ๋ณํ๊ณ ์์ต๋๋ค) , ๊ทธ๋ ๋ค๋ฉด ์ด ์คํ๊ฒํฐ๋ฅผ ์ด๋ป๊ฒ ์์๋ผ์ง ์์ํ ์ ์์ต๋๋ค. ๋จ์ ๊ฒ์ ์์์ ๊ธฐ์ ์ ๊ฟ๊พธ๋ ๊ฒ๋ฟ์
๋๋ค. ์ด์ ๊ฐ ์ต๊ด๋ง๋ค ๊ณ ์ ํ ์ธํฐํ์ด์ค๊ฐ ์๋ค๋ฉด. ์์ํด๋ณด์:
public interface ะัะธะฒััะบะฐะัะธั
ะปัะฟัะฒะฐัั {
public void ะฟัะธั
ะปัะฟัะฒะฐัั();
}
public interface ะัะธะฒััะบะฐะะพะดะถะธะผะฐัั {
public void ะฟะพะดะถะธะผะฐัั();
}
public interface ะัะธะฒััะบะฐะะพะฒัััััะะะพัั {
public void ะบะพะฒัััััะะะพัั();
}
public interface ะัะธะฒััะบะฐะฅะปะพะฟะฐััะ ะตัะฝะธัะฐะผะธ {
public void ั
ะปะพะฟะฐััะ ะตัะฝะธัะฐะผะธ();
}
public interface ะัะธะฒััะบะฐะงะตัะฐััะะพัะพะดั {
public void ัะตัะฐััะะพัะพะดั();
}
๊ทธ๋ฐ ๋ค์ ๋ ๊ณ ์์์ฒ๋ผ ๊ฐ์ธ ์ต๊ด์ ๋ค์ค ์์์ ์ฌ์ฉํ์ฌ ๊ฐ์กฑ ๊ตฌ์ฑ์ ๊ฐ์ธ์ ์ต๊ด์ ํ์ํ ์ธํฐํ์ด์ค๋ฅผ ์
๋ ฅํ ์ ์์ต๋๋ค. ์ด ๊ฐ์:
public interface ะัะธะฒััะบะธะะฐะผั extends ะัะธะฒััะบะฐะะพะดะถะธะผะฐัั, ะัะธะฒััะบะฐะฅะปะพะฟะฐััะ ะตัะฝะธัะฐะผะธ {
}
public interface ะัะธะฒััะบะธะะฐะฟั extends ะัะธะฒััะบะฐะงะตัะฐััะะพัะพะดั, ะัะธะฒััะบะฐะฅะปัะฟะฐัั {
}
public interface ะัะธะฒััะบะธะะตัะธ extends ะัะธะฒััะบะฐะะพะดะถะธะผะฐัั, ะัะธะฒััะบะฐะฅะปัะฟะฐัั,ะัะธะฒััะบะฐะะพะฒัััััะะะพัั {
}
public interface ะัะธะฒััะบะธะะฐัะธ extends ะัะธะฒััะบะฐะฅะปัะฟะฐัั, ะัะธะฒััะบะฐะฅะปะพะฟะฐััะ ะตัะฝะธัะฐะผะธ {
}
๊ทธ๋ฐ ๋ค์ ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ํ๋ ํด๋์ค(์: Mom)์ ๊ตฌํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
class ะะฐะผะฐ implements ะัะธะฒััะบะธะะฐะผั{
@Override
public void ั
ะปะพะฟะฐััะ ะตัะฝะธัะฐะผะธ () {
System.out.println("ะฅะปะพะฟ-ั
ะปะพะฟ");
}
@Override
public void ะฟะพะดะถะธะผะฐัั() {
System.out.println("ะะพะดะถะฐัั ะณัะฑะบะธ");
}
}
Papa, Petya ๋ฐ Masha ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค . ๊ทธ๋ฐ ๋ค์ Ivanov ์ ํ๊ตฐ์ด ํ์ฅ๋๋ฉด ์ต๊ด์ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์
๋๋ค. ์๋ฌ๋์ ์ฌ๋ฃ์ฒ๋ผ ์ธํฐํ์ด์ค ์์ค์์ ์์์ ํตํด ์ต๊ด์ ์๊ณ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ์์ฑํ์ง ์์ ๊ฒ์
๋๋ค. ์ด, ๊ฟ, ๊ฟ... ๊ทธ๋ ค์ง ๋จ์๊ฐ ๋ง์ต๋๋ค. ์ค์ ๋ก ๊ฐ๋ฅํฉ๋๋ค. ์ด์ Ivanov ๊ฐ์กฑ์ ์๋ฎฌ๋ ์ด์
์ด ์ ์ฅ๋์์ต๋๋ค! ์ธ์ฌํ ๋
์๋ "์ ๊ฐ ๊ฐ์กฑ ๊ตฌ์ฑ์์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋๊ฐ? ์ฐ๋ฆฌ๋ ์ผ๋ จ์ ์กฐ์น๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ์ํ ํด๋์ค์ ๋ํด ์ฆ์ ๊ตฌํํฉ๋๋ค."๋ผ๊ณ ์ง๋ฌธํ ์ ์์ต๋๋ค. ๋ง์ ๋ณ๋ ฌ ์ธ๊ณ์ Petya์ double์ด ์๊ณ ๋ชจ๋ Petya๊ฐ Petya's Habits ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค๊ณ ์์ํด ๋ด
์๋ค.
interface ะัะธะฒััะบะธะะตัะธ extends ะัะธะฒััะบะฐะะพะดะถะธะผะฐัั, ะัะธะฒััะบะฐะฅะปัะฟะฐัั,ะัะธะฒััะบะฐะะพะฒัััััะะะพัั
class ะะตััะัะตะปะตะฝะฝะฐัะฅ implements ะัะธะฒััะบะธะะตัะธ
class ะะตััะัะตะปะตะฝะฝะฐัY implements ะัะธะฒััะบะธะะตัะธ
// ะธ ั.ะด.
๊ณตํต ์ธํฐํ์ด์ค๊ฐ ์๋ค๋ฉด ์ด๋จ๊น์?
class ะะตััะัะตะปะตะฝะฝะฐัะฅ implements ะัะธะฒััะบะฐะะพะดะถะธะผะฐัั, ะัะธะฒััะบะฐะฅะปัะฟะฐัั,ะัะธะฒััะบะฐะะพะฒัััััะะะพัั
class ะะตััะัะตะปะตะฝะฝะฐัY implements ะัะธะฒััะบะฐะะพะดะถะธะผะฐัั, ะัะธะฒััะบะฐะฅะปัะฟะฐัั,ะัะธะฒััะบะฐะะพะฒัััััะะะพัั
// ะธ ั.ะด.
์ด๋ก ์ธํด ๋ ๋ฐ๋ณต์ ์ธ ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค. ์ธํฐํ์ด์ค ์์์ ํตํด ์ ํ๋ฆฌ์ผ์ด์
๋ณ๊ฒฝ์ด ๋์ฑ ์ ์ฐํด์ง๋ฉฐ, ํนํ ๋ฉ์๋ ๋ฐ๋ณต ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ธํฐํ์ด์ค์ ๋ค์ค ์์์ด ํ์ฉ๋๋ค๋ ์ ์ ๋ค์ ํ ๋ฒ ์ฐธ๊ณ ํ์ธ์.
GO TO FULL VERSION