๊ฒฝํ์ ํตํด์ ์ป๋ ์ง์์ด ์ค๋ ฅ์ด ๋๋.. ๊ทธ๋ฐ ์์ ํด๋ณธ ์ ์๋..?
๋ ์์ฃผ ๊ทธใน..
์ค๋ ฅ์ด ๋๊ธฐ ์ํ.. ๋
ธ์ค๋ ฅ ์์
[์ถ์ฒ : ์ ํ ํฌ ์๋ฐ ]
์์(Inheritance)
์์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ๊ทธ๋๋ก ๋ฌผ๋ ค๋ฐ์ ์ ์๋ ์์ ๊ธฐ๋ฅ
extends ํค์๋ ์ฌ์ฉ
Dog3 ํด๋์ค๋ Animal3 ํด๋์ค๋ฅผ ์์
Dog3 ํด๋์ค์ name ์ด๋ผ๋ ๊ฐ์ฒด๋ณ์์ setName ์ด๋ผ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ง ์์์ง๋ง, Animal3 ํด๋์ค๋ฅผ ์์ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅ
class Animal3 {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog3 extends Animal3 {
}
public class A3_Extends {
public static void main(String[] args) {
Dog3 dog = new Dog3();
dog.setName("poppy");
}
}
๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ํ์ฅ
sleep ๋ฉ์๋ ์ถ๊ฐ๋ก ์ธํ ๋ถ๋ชจ ํด๋์ค ๊ธฐ๋ฅ ํ์ฅ
Dog3 ํด๋์ค๋ Animal3 ํด๋์ค๋ณด๋ค ์ข ๋ ๋ง์ ๊ธฐ๋ฅ(sleep ๋ฉ์๋ ๋ฑ์ ์ถ๊ฐ๋๋ ๊ธฐ๋ฅ)์ ๊ฐ์ง๊ฒ ๋จ.
class Animal3 {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog3 extends Animal3 {
void sleep() {
System.out.println(this.name+" zzz");
}
}
public class A3_Extends {
public static void main(String[] args) {
Dog3 dog = new Dog3();
dog.setName("poppy");
}
}
IS-A๊ด๊ณ
Dog3 ํด๋์ค๋ Animal3 ํด๋์ค๋ฅผ ์์. (Dog3 ์ Animal3 ํด๋์ค์ ํ์ ๊ฐ๋
)
์ด๋ฌํ ๊ด๊ณ๋ฅผ IS-A ๊ด๊ณ๋ผ๊ณ ํํ, ์ฆ "Dog3 is a Animal3" ๋ผ๊ณ ํํํ๋ IS-A ๊ด๊ณ.
IS-A ๊ด๊ณ ํ์ฑ์ ๋ฐ๋ฅธ ์์
์ฃผ์์ฌํญ : ์ด๋ฐ ๊ฒฝ์ฐ dog ๊ฐ์ฒด๋ฅผ Animal3 ์๋ฃํ์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ Dog3 ํด๋์ค์ ์กด์ฌํ๋ sleep ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. (Animal3 ํด๋์ค์ setName ๋ฉ์๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ)
Animal3 dog = new Dog3(); // Dog is a Animal
๋ฐ๋์ ๊ฒฝ์ฐ
์ปดํ์ผ ์ค๋ฅ ๋ฐ์
๋ถ๋ชจ ํด๋์ค๋ก ๋ง๋ ๊ฐ์ฒด๋ ์์ ํด๋์ค์ ์๋ฃํ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
Dog3 dog = new Animal3();
Object ํด๋์ค
Object ํด๋์ค๋ ๋ฐ๋ก ์ฝ๋ฉํ์ง ์์๋ ์๋ฐ์์ ๋ง๋ค์ด์ง๋ ๋ชจ๋ ํด๋์ค๋ Object ํด๋์ค ๋ฅผ ์๋์ผ๋ก ์์๋ฐ๊ฒ๋ ๋์ด ์๋ค.
class Animal extends Object {
String name;
void setName(String name) {
this.name = name;
}
}
Object animal = new Animal(); // Animal is a Object
Object dog = new Dog(); // Dog is a Object
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ(Method overriding)
๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค๊ฐ ๋์ผํ ํํ๋ก ๋ ๋ค์ ๊ตฌํํ๋ ํ์(= ๋ฉ์๋ ๋ฎ์ด์ฐ๊ธฐ)
Dog3 ๋ฅผ ๋ ๊ตฌ์ฒดํ ์ํค๊ธฐ ์ํด HouseDog ํด๋์ค๋ฅผ ๋ง๋ค์ด Dog3 ํด๋์ค๋ฅผ ์์ํ๊ณ ์ ํ๋ค.
์๋์ ๊ฐ์ด HouseDog3 ํด๋์ค์ Dog3 ํด๋์ค์ ๋์ผํ ํํ์ sleep ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด HouseDog3 ํด๋์ค์ sleep ๋ฉ์๋๊ฐ Dog3 ํด๋์ค์ sleep ๋ฉ์๋๋ณด๋ค ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๊ฒ ๋์ด HouseDog3 ํด๋์ค์ sleep ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
class Animal3 {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog3 extends Animal3 {
void sleep() {
System.out.println(this.name+" zzz");
}
}
class HouseDog3 extends Dog3 {
void sleep() {
System.out.println(this.name + " zzz in house");
}
}
public class A3_Extends {
public static void main(String[] args) {
HouseDog3 houseDog = new HouseDog3();
houseDog.setName("happy");
houseDog.sleep(); // happy zzz ์ถ๋ ฅ
}
}
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ(Method overloading)
์
๋ ฅํญ๋ชฉ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์์.
์ด๋ฏธ sleep ์ด๋ผ๋ ๋ฉ์๋๊ฐ ์์ง๋ง ๋์ผํ ์ด๋ฆ์ sleep ๋ฉ์๋๋ฅผ ๋ ์์ฑํ ์ ์๋ค.(์
๋ ฅ ํญ๋ชฉ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ๋ง ๊ฐ๋ฅ)
...
class HouseDog3 extends Dog3 {
void sleep() {
System.out.println(this.name + " zzz in house");
}
void sleep(int hour) {
System.out.println(this.name+" zzz in house for " + hour + " hours");
}
}
...
๋ค์ค ์์
ํด๋์ค๊ฐ ๋์์ ํ๋ ์ด์์ ํด๋์ค๋ฅผ ์์๋ฐ๋ ๊ฒ, ์๋ฐ๋ ๋ค์ค ์์์ ์ง์ํ์ง ์๋๋ค.
์๋ฐ๋ ๋ถ๋ช
ํ ๊ฐ์ฒด์งํฅ์ ํน์ง์ ๋ํ๋ด๊ณ ์๋ค.
๋ถํ์ํ๊ณ ์ ๋งค๋ชจํธํ ๋ถ๋ถ์ ํตํด ์ค๋ฅ์ ์กฐ์ง ํ๋๊น์ง๋ ์๋ฐฉํ๊ณ ์ ์๋ฐฉํ๋ค๊ณ ํ๋ค.
ํ์คํ ์ข์ ์ธ์ด์ธ ๊ฒ ๊ฐ๋ค.
๊ทผ๋ฐ ์ด๋ ต๋ค ^^..