
Animal
๋๋ฌผ์ ๋ํ๋ด๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๊ฐ์ ธ์ค๊ณ speak
๊ทธ ์์ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ด
์๋ค.
public class Animal {
public void speak() {
System.out.println("Hello!");
}
}
์ด์ ๋ง ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์์ํ์ง๋ง ์๋ง๋ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ณผ ์ ์์ ๊ฒ์
๋๋ค. ์ธ์์ ๋ง์ ๋๋ฌผ๋ก ๊ฐ๋ ์ฐจ ์๊ณ ๋ชจ๋ ๋ค๋ฅด๊ฒ "๋งํฉ๋๋ค": ๊ณ ์์ด ์ผ์น, ์ค๋ฆฌ ๊ฝฅ๊ฝฅ, ๋ฑ ์ฟ์ฟ ์๋ฆฌ ๋ฑ. ์ฐ๋ฆฌ์ ๋ชฉํ๋ ๊ฐ๋จํฉ๋๋ค 
meow()
์ผ์น, ์ญ์ญ๊ฑฐ๋ฆฌ๋ ๋ฑ์ ๋ฉ์๋๋ฅผ ๋ง๋๋ ๋์ ๋ฉ์๋๊ฐ ํธ์ถ๋ hiss()
๋ ๋ฑ์ด ์ญ์ญ๋๊ณ ๊ณ ์์ด๊ฐ ์ผ์นํ๊ณ ๊ฐ๊ฐ ์ง๊ธฐ๋ฅผ ์ํฉ๋๋ค . ๋ฉ์๋ ์ฌ์ ์speak()
๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ต๋๋ค . Wikipedia์์๋ ์ด ์ฉ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช
ํฉ๋๋ค. ๋ฉ์๋ ์ฌ์ ์๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ํ์ ํด๋์ค ๋๋ ํ์ ํด๋์ค๊ฐ ์์ ํด๋์ค ๋๋ ์์ ํด๋์ค ์ค ํ๋์์ ์ด๋ฏธ ์ ๊ณตํ ๋ฉ์๋์ ํน์ ๊ตฌํ์ ์ ๊ณตํ ์ ์๋๋ก ํ๋ ์ธ์ด ๊ธฐ๋ฅ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ต๋๋ค. ์ฌ์ ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถ๋ชจ ํด๋์ค์ ์ผ๋ถ ๋ฉ์๋๋ฅผ ๊ฐ์ ธ์ ๊ฐ ํ์ ํด๋์ค์์ ๊ณ ์ ํ ๊ตฌํ์ ์์ฑํ ์ ์์ต๋๋ค. ํ์ ํด๋์ค์ ์ ๊ตฌํ์ ์์ ํด๋์ค์ ๊ตฌํ์ "๋์ฒด"ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ป๊ฒ ๋ณด์ด๋์ง ๋ด
์๋ค. ์ฐ๋ฆฌ ํด๋์ค์ ์์ 4๋ช
์ ๋ง๋ค์ด ๋ด
์๋ค Animal
.
public class Bear extends Animal {
@Override
public void speak() {
System.out.println("Growl!");
}
}
public class Cat extends Animal {
@Override
public void speak() {
System.out.println("Meow!");
}
}
public class Dog extends Animal {
@Override
public void speak() {
System.out.println("Woof!");
}
}
public class Snake extends Animal {
@Override
public void speak() {
System.out.println("Hiss!");
}
}
๋ค์์ ๋ฏธ๋๋ฅผ ์ํ ์์ ์ํ ๊ฟํ์
๋๋ค. ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ค๋ฉด IntelliJ IDE ์์ ํ์ ํด๋์ค์ ์ฝ๋๋ก ์ด๋ํ๊ณ Ctrl+O๋ฅผ ๋๋ฅด๊ณ ๋ฉ๋ด์์ ๋ฉ์๋ ์ฌ์ ์...๋ฅผ ์ ํํฉ๋๋ค . ์ฒ์๋ถํฐ ๋จ์ถํค ์ฌ์ฉ์ ์ต์ํด์ง์ญ์์ค. ๊ทธ๋ค์ ์ฝ๋ฉ ์๋๋ฅผ ๋์ผ ๊ฒ์
๋๋ค! ์ํ๋ ๋์์ ์ป๊ธฐ ์ํด ๋ช ๊ฐ์ง ์์
์ ์ํํ์ต๋๋ค.
- ๊ฐ ์์ ํด๋์ค์์ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋์ ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ฉ์๋๋ฅผ ๋ง๋ค์์ต๋๋ค.
-
์ฐ๋ฆฌ๋ ๋ฉ์๋์ ๋ถ๋ชจ ํด๋์ค์ ๋์ผํ ์ด๋ฆ์ ๋ถ์ฌํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ๋์์ ์ฌ์ ์ํ๊ณ ์ถ๋ค๊ณ ์ปดํ์ผ๋ฌ์ ์๋ ธ์ต๋๋ค. ์ปดํ์ผ๋ฌ์ ๋ํ ์ด "๋ฉ์์ง"๋ @Override ์ฃผ์์ ํตํด ์ ๋ฌ๋ฉ๋๋ค.
๋ฉ์๋ ์์ @Override ์ฃผ์์ ์ปดํ์ผ๋ฌ(๋ฐ ์ฝ๋๋ฅผ ์ฝ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ)์๊ฒ "๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ์ค์๋ ์ค์๊ฐ ์๋๋๋ค. ์ด ๋ฉ์๋๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ์ฌ์ ์ํ๊ณ ์ถ์ต๋๋ค. . - ์ฐ๋ฆฌ๋ ๊ฐ ์์ ํด๋์ค์ ํ์ํ ๊ตฌํ์ ์์ฑํ์ต๋๋ค. ๋ฉ์๋๊ฐ ํธ์ถ ๋๋ฉด
speak()
๋ฑ์ ์ญ์ญ๊ฑฐ๋ฆฌ๊ณ ๊ณฐ์ ์ผ๋ฅด๋ ๊ฑฐ๋ฆฝ๋๋ค.
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
Animal animal3 = new Bear();
Animal animal4 = new Snake();
animal1.speak();
animal2.speak();
animal3.speak();
animal4.speak();
}
}
์ฝ์ ์ถ๋ ฅ: ์ผ์
! ์ผ์น! ์ผ๋ฅด๋ ! ์ค์! ์ข์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํฉ๋๋ค! ์ ํ์ด ์์ ํด๋์ค์ธ ์ฐธ์กฐ ๋ณ์ 4๊ฐ๋ฅผ ์์ฑ Animal
ํ๊ณ ํ์ ํด๋์ค์ ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด 4๊ฐ๋ฅผ ํ ๋นํ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ ๊ฐ์ฒด๋ ๋ค๋ฅด๊ฒ ๋์ํฉ๋๋ค. ๊ฐ ํ์ ํด๋์ค์ ๋ํด ์ฌ์ ์๋ ๋ฉ์๋๋ ํด๋์ค ์ speak()
๊ธฐ์กด ๋ฉ์๋๋ฅผ ๋์ฒดํฉ๋๋ค (๋จ์ํ ์ฝ์์ "Speaking: " ํ์). ๋ฉ์๋ ์ฌ์ ์์๋ ๋ช ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์ต๋๋ค. speak()
Animal

-
์ฌ์ ์๋ ๋ฉ์๋๋ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋์ ๋์ผํ ์ธ์๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
speak
๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๊ฐ a๋ฅผ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐString
์์ ํด๋์ค์ ์ฌ์ ์๋ ๋ฉ์๋๋ a๋ฅผString
์ ๋ ฅ์ผ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.public class Animal { public void speak(String s) { System.out.println("Speaking: " + s); } } public class Cat extends Animal { @Override // Error! public void speak() { System.out.println("Meow!"); } }
-
์ฌ์ ์๋ ๋ฉ์๋๋ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋์ ๋์ผํ ๋ฐํ ํ์์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
public class Animal { public void speak() { System.out.println("Hello!"); } } public class Cat extends Animal { @Override public String speak() { // Error! System.out.println("Meow!"); return "Meow!"; } }
-
์ฌ์ ์๋ ๋ฉ์๋์ ์ก์ธ์ค ํ์ ์๋ ์๋ณธ๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
public class Animal { public void speak() { System.out.println("Hello!"); } } public class Cat extends Animal { @Override private void speak() { // Error! System.out.println("Meow!"); } }
speak()
ํด๋์ค๋ ํน์ ๋์ (๊ฐ ์ง๋ ์๋ฆฌ, ๊ณ ์์ด ์ธ์ ์๋ฆฌ)์ ๊ฐ์ง๋ง ์ธํฐํ์ด์ค๋ ๋จ์ผ ์ธํฐํ์ด์ค์
๋๋ค.bark()
meow()
GO TO FULL VERSION