๋จ, ์ด ์ธ ๊ฐ์ง ๊ฐ๋
์ ์์ฑ์, ์์ ์ด๋ผ๋ ๊ฐ๋
์ ์๊ณ ์์ด์ผ๋ง ์ดํด ๊ฐ๋ฅํฉ๋๋ค~
์ ๊ฐ ์์ฑ์, ์์ ์์ฝ ์ ๋ฆฌ ํ๊ฑฐ ์์ผ๋ ์ฐธ๊ณ ํ์ธ์~
๊ถ๊ธํ ์ ์ด๋ ์ด๋ ค์ด ๋ฌธ์ ์์ผ์๋ฉด ๋๊ธ๋ก ๋ฌธ์์ฃผ์ธ์~
์ ์ฑ๊ป ๋ต๋ณํด ๋๋ฆฌ๊ฒ ์ต๋๋ค
1. ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
= ๋ฉ์๋ ์ค๋ณต ์ ์, ๊ณ์ฐ๊ธฐ
- ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ธ์๋ง ๋ค๋ฅด๊ฒ ํ์ฌ ์ค๋ณต ์ ์
- ๋ฉ์๋์ ์ด๋ฆ์ด ๊ฐ์์ผ ํ๊ณ , ์ธ์์ ๊ฐ์๋ ํ์
์ด ํ๋ ค์ผ ํ๋ค.
- ๋ฆฌํด ๊ฐ๋ง ๋ค๋ฅธ ๊ฒ์ ์ค๋ฒ๋ก๋ฉ ํ ์ ์์
์ฝ๊ฒ ๋งํด ๊ณ์ฐ๊ธฐ ์๊ฐํ๋ฉด ๋จ
์ฌ๋ฌ๋ถ์ด ๊ณ์ฐ๊ธฐ๋ฅผ ๊ฐ๋ฐํ๋ค๊ณ ์๊ฐ ํ์ ๋
์ ์์ธ 100 + 200 ์ ํ๋ฉด 300 ๊ฐ์ ๋ฐํํ์ง๋ง
์ค์์ธ 100.0 + 200.0 ์ ํ๊ฒ ๋๋ฉด 300.0 ๊ฐ์ ๋ฐํํ๊ฒ ํ๋ก๊ทธ๋จ์ ์ง๋ ค๊ณ ํฉ๋๋ค
๊ทธ๋ผ ๊ฐ์ ๋ง์ ์ ์ํํ๋ ๋ฉ์๋๋ผ๋ ์ธ์๊ฐ์ด ์ ์ ๋ ๊ฐ, ์ค์ ๋ ๊ฐ๋ก ๋ค๋ฅด๊ฒ ๋ง๋ค์ด์ง๊ฒ ์ฃ ?
์ด๊ฒ ๋ฐ๋ก ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
ใ
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ ์์ (๊ณ์ฐ๊ธฐ)
class Calculate [
public int cal(int a, int b) {
return a - b;
}
public float cal(floa a, float b) {
return a - b;
}
public double cal(double a, double b) {
return a + b;
}
public cal(int a + int b + int c) {
return a + b + c;
}
class Example {
public static void main(String[] args) {
Calculate a = new Calculate();
System.out.print( a.cal(31, 69, 25) + "," );
System.out.print( a.cal(24.8, 5.1) );
}
}
๊ฒฐ๊ณผ๊ฐ 125, 29.9
์ธ์๊ฐ 3๊ฐ์ธ ๊ฑด ์ธ์๊ฐ 3๊ฐ ๋ค์ด์๋ ๋ฉ์๋ ํ์ฐ๊ณ
์ธ์๊ฐ์ด ์ค์์ธ ๊ฒ์ ์ค์ ๋ฉ์๋ ํ์์ ์ค์ ๋ฐํ
2. ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
= ๋ฉ์๋ ์ฌ์ ์, ์๋ฒ์ง์ฒ๋ผ ์ด๊ธฐ ์ซ์ด์~!
- ์์ ๊ด๊ณ์์ ๋ถ๋ชจ ํด๋์ค์์ ์ ์๋ ๋ฉ์๋๋ฅผ ๋ค์ ์ฌ์ ์
- ์ถ์ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ฅผ ์์ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ ๊ฐ๋
- ๋ถ๋ชจ ๋ฉ์๋์ ์ด๋ฆ, ๋ฆฌํดํ์
, ๋งค๊ฐ๋ณ์์ ๊ฐ์์์ ํ์ด ์์ ํ ๋์ผํด์ผ ํ๋ค.
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ "์๋ฒ์ง์ฒ๋ผ ์ด๊ธฐ ์ซ์ด์!" ๋ผ๊ตฌ ๊ธฐ์ตํ์๋ฉด ๋ฉ๋๋ค~
๋์ ์๋ฒ์ง๊ฐ ๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ด๋ ์์์ ๋ด ๋ฉ์๋์ ์๋ ๊ธฐ๋ฅ์ ์ํํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฝ๊ฒ ๋งํด Animal(๋๋ฌผ) ์ด๋ผ๋ ์์ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ
Cat(๊ณ ์์ด), Dog(๊ฐ) ๋ฑ์ ํ์ ํด๋์ค๊ฐ Animal์ ์์๋ฐ์ ๊ฒฝ์ฐ
๋๋ฌผ๋ณ๋ก ์ธ์์๋ฆฌ๊ฐ ๋ฌ๋ผ์ผ ๊ฒ ์ฃ ? ๊ณ ์์ด๋ '์ผ์น', ๊ฐ๋ '๋ฉ๋ฉ' ์ง์ด์ผ ๊ฒ ์ฃ ~
์ฆ, ์ด๋ฆ์ด ๊ฐ์ ๊ฐ์ speak() ๋ฉ์๋๊ฐ Animal์ ์์ด๋ ๊ฐ๋ ๊ณ ์์ด๋ ์์ ๊ณ ์ ์ ์ธ์์๋ฆฌ๋ฅผ ๊ตฌํํ๋ค๋ ๊ฒ์ ๋๋ค.
ใ
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ ์์ (๋๋ฌผ ์ธ์์๋ฆฌ)
class Animal {
public void speak() {
System.out.println("๋๋ฌผ ์ธ์์๋ฆฌ")
}
}
class Dog extends Animal {
public void speak() {
System.out.println("๋ฉ๋ฉ!");
}
}
class Cat extends Animal {
public void speak() {
System.out.println("์ผ์น~");
}
}
class Main {
public static void main(String args[]) {
Dog dog = new Dog();
Cat cat = enw Cat();
dog.speak();
cat.speak();
}
}
๊ฒฐ๊ณผ๊ฐ:
๋ฉ๋ฉ!
์ผ์น~
3. ํ์ด๋ฉ
= static ๋ฉ์๋ ๊ด๋ จ
- ์์ ํด๋์ค์ static ๋ฉ์๋๋ฅผ ํ์ ํด๋์์์ ๊ฐ์ ์ ํ์ผ๋ก ๋ค์ ์ ์ธ
- ํ์ด๋ฉ๋ ๋ฉ์๋๋ ๋ฉ์๋ ํธ์ถ์ด ํด๋์ค ํ์
์ ๋ฐ๋ผ ๊ฒฐ์
ex) Parent a = new Child(); ์ผ ๋ instance a์ ํ์
์ด Parent์ด๋ฏ๋ก Parent์ ๋ฉ์๋ ํธ์ถ
๋ฌด์จ ๋ง์ธ์ง ์ด๋ ค์ฐ์๋ฉด ์๋ ์ฝ๋ ๋ณด์๋ฉด ์๊ฒ ๋ฉ๋๋ค
ํ์ด๋ฉ ์์
class A {
public void f() { System.out.print("1 "); }
public static void g() { System.out.print("2 "); }
}
class B extends A {
public void f() { System.out.print("3 "); }
public static void g() { System.out.print("4 "); }
}
class
C extends B {
public void f() { System.out.print("5 "); }
public static void g() { System.out.print("6 "); }
}
class D {
public static void main(String args[]) {
A obj = new C();
obj.f();
obj.g();
System.out.println();
B obj1 = new C();
obj1.f();
obj1.g();
}
}
์ถ๋ ฅ๊ฐ:
5 2
5 4
main์์ ๋ ๊ฐ์ ์ธ์คํด์ค obj, obj1์์ฑ
A obj = new C();
B obj1 = new C();
์์๊ด๊ณ A -> B -> C
๊ฐ ํด๋์ค๋ ๋ ๊ฐ์ ๋ฉ์๋ ๊ฐ์ง๋๋ฐ ๋ฉ์๋ ์ด๋ฆ์ด ๊ฐ๊ณ , ๋งค๊ฐ๋ณ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ ํํ๋ก ๋ณด์ฌ์ง
๋ฉ์๋ f() ์ ์ผ๋ฐ ๋ฉ์๋์ธ๋ฐ, g() ๋ static ๋ฉ์๋
f() ์ ๊ฒฝ์ฐ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ฐ๋ผ ์์๋ฐ์ ํ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ํ
obj.f()๋ ์ต์ข
์์๋ฐ์ ํ์ํด๋์ค C์ ์๋ f() ์ํ
obj1.f()๋ C๋ฅผ ์ฐธ์กฐํ๋ฏ๋ก C์ ์๋ f() ์ํ
g() ๋ ์ธ์คํด์ค์ ํด๋์ค ํ์
์ ๋ฐ๋ผ ๊ฒฐ์ ๋จ <
obj.g() => obj๋ Aํ์
๋ณ์์ด๋ฏ๋ก A๊ฐ ๊ฐ์ง g() ํธ์ถ
obj1.g() => obj1์ Bํ์
๋ณ์์ด๋ฏ๋ก B๊ฐ ๊ฐ์ง g() ํธ์ถ
์์ - ํ์ด๋ฉ ์ ๋๋ ๊ฒฝ์ฐ
์์ ํด๋์ค์ ํ์ ํด๋์ค ๋ชจ๋ ๊ฐ์ static ๋ฉ์๋์ฌ์ผ ํ์ด๋ฉ์ด ๋จ
class A {
public void f() { System.out.print("1 "); }
public static void g() { System.out.print("2 "); }
}
class B extends A {
public void f() { System.out.print("3 "); }
public void g() { System.out.print("4 "); }
}
class D {
public static void main(String aprgs[]) {
A obj = new B();
obj.f();
obj.g(); // ์ฌ๊ธฐ์ ์ค๋ฅ
}
}
์ ์ฝ๋๋ ์ค๋ฅ๋ฐ์
์? g()๋ฉ์๋์ ๊ฒฝ์ฐ ์์ ํด๋์ค A๋ static๋ฉ์๋๋ก ์ ์ธ๋์์ผ๋ A๋ฅผ ์์ ๋ฐ์ ํ์ํด๋์ค B์์๋ ์ผ๋ฐ ํด๋์ค๋ก ์์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์