μ€λ²λ‘λ© (Overloading)
곡μμ μΌλ‘ λ©μλ μ€λ²λ‘λ©μ μ μνκ³ μλ λ§μ
κ°μ μ΄λ¦μ λ©μλλ₯Ό μ€λ³΅ μ μνλ κ²μ μλ―Ένλ€.
μ΄κ²μ λ¬΄μ¨ λ§μΌκΉ?
Javaμμλ μλ ν ν΄λμ€ λ΄μ κ°μ μ΄λ¦μ
λ©μλλ₯Ό μμ±ν μ μλ€.
νμ§λ§, μ€λ²λ‘λ©μ μ¬μ©νλ€λ©΄ κ°λ₯νλ€.
λ©μλ μ€λ²λ‘λ© μ‘°κ±΄μ μ΄λ¬νλ€.
λ©μλ μ΄λ¦μ λμΌν΄μΌ νλ€.
맀κ°λ³μμ κ°μ λλ μμ, νμ μ΄ λ¬λΌμΌ νλ€.
λ¦¬ν΄ νμ μ μκ΄μ΄ μλ€.
μ€λ²λ‘λ©μ μμ λ₯Ό λ§λ€μ΄λ³΄μλ€.
class Exam {
String name;
String subject;
int score;
void test(String name) {
this.name = name;
System.out.println("μν μμμ μ΄λ¦μ " + name + "μ
λλ€.");
}
void test(String name, String subject) {
this.name = name;
this.subject = subject;
System.out.println("μν μμμ μ΄λ¦μ " + name + "μ΄κ³ κ³Όλͺ©λͺ
μ " + subject + "μ
λλ€.");
}
void test(String name, String subject, int score) {
this.name = name;
this.subject = subject;
this.score = score;
System.out.println("μν μμμ μ΄λ¦μ " + name + "μ΄κ³ κ³Όλͺ©λͺ
μ " + subject + "μ΄κ³ μ μλ " + score + "μ μ
λλ€.");
}
}
public class Overloading {
public static void main(String[] args) {
Exam e = new Exam();
e.test("κΉμ½λ©");
// μν μμμ μ΄λ¦μ κΉμ½λ©μ
λλ€.
e.test("λμ½λ©", "Java νλ‘κ·Έλλ°");
// μν μμμ μ΄λ¦μ λμ½λ©μ΄κ³ κ³Όλͺ©λͺ
μ Java νλ‘κ·Έλλ°μ
λλ€.
e.test("λ€μ½λ©", "Python", 90);
// μν μμμ μ΄λ¦μ λ€μ½λ©μ΄κ³ κ³Όλͺ©λͺ
μ Pythonμ΄κ³ μ μλ 90μ μ
λλ€.
}
}
μ μμ μμλ 보면 μκ² μ§λ§,
λ©μλ μ΄λ¦μ λͺ¨λ testλ‘ λμΌνλ°
맀κ°λ³μμ κ°―μ, νμ μ΄ λͺ¨λ λ€λ₯΄λ€λ κ²μ μ μ μλ€.
Java μ»΄νμΌλ¬λ μ¬μ©μκ°
μ€λ²λ‘λ©λ λ©μλλ₯Ό νΈμΆνλ©΄,
μ λ¬λ 맀κ°λ³μμ κ°μ, νμ λ±μ λͺ¨λ κ³ λ €νμ¬
μλ§μ λ©μλλ₯Ό μ°Ύμ νΈμΆν΄μ€λ€.
<μ€λ²λ‘λ©μ μ₯μ >
μ΄λ κ² μ€λ²λ‘λ©μ μ¬μ©νλ€λ©΄,
κΈ°μ΅ν΄μΌ ν λ©μλκ° κ°μνκ² λκ³
μ€λ³΅ μ½λμ λν ν¨μ¨μ μΈ κ΄λ¦¬κ° κ°λ₯νκ² λλ€.
μ€λ²λΌμ΄λ© (Overriding)
λ©μλ μ€λ²λΌμ΄λ©μ΄λ μμ κ΄κ³μ μλ
λΆλͺ¨ ν΄λμ€μμ μ΄λ―Έ μ μλ λ©μλλ₯Ό
μμ ν΄λμ€μμ μ¬μ μνλ κ²μ μλ―Ένλ€.
Javaμμ μμ ν΄λμ€λ
λΆλͺ¨ ν΄λμ€μ private μμλ€μ μ μΈν
λͺ¨λ κ²λ€μ μμλ°λλ€λ νΉμ§μ κ°μ§λ€.
λ©μλλ₯Ό μμλ°μΌλ©΄,
κ·Έ λ©μλλ₯Ό κ·Έλλ‘ μ¬μ©ν μλ μκ³
μμ ν΄λμ€μ μ ν©νκ² λ°μ μμΌ
μμ ν΄μ μ¬μ©ν μλ μλ€.
μ΄λ κ² λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό
μμ ν΄λμ€μμ μ¬μ μνμ¬ μ¬μ©νλ κ²μ
λ©μλ μ€λ²λΌμ΄λ©μ΄λΌκ³ νλ κ²μ΄λ€.
λ©μλ μ€λ²λΌμ΄λ© 쑰건μ μ΄λ¬νλ€.
λ©μλ μ΄λ¦μ΄ κ°μμΌ νλ€.
λ§€κ° λ³μμ κ°μ, νμ , μμκ° κ°μμΌ νλ€.
λ¦¬ν΄ νμ μ΄ κ°μμΌ νλ€.
μ κ·Ό μ νμ(public, private λ±...)λ λΆλͺ¨λ³΄λ€ λ²μκ° λκ±°λ κ°μμΌ νλ€.
μ‘°μλ³΄λ€ λ ν° μμΈλ₯Ό λμ§ μ μλ€.
μ€λ²λΌμ΄λ© μμ
class Parent {
void hello() {
System.out.println("μλ
νμΈμ λΆλͺ¨ ν΄λμ€μ
λλ€.");
}
}
class Child extends Parent {
@Override
void hello() {
System.out.println("μλ
νμΈμ μ λ λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°μμ΅λλ€.");
}
}
public class Overriding {
public static void main(String[] args) {
Parent p = new Parent();
Child c = new Child();
p.hello();
// μλ
νμΈμ λΆλͺ¨ ν΄λμ€μ
λλ€.
c.hello();
// μλ
νμΈμ μ λ λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°μμ΅λλ€.
}
}
μ΄λ λ―, μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ
λ©μλλ₯Ό μμλ°μλ λ€λ₯Έ κΈ°λ₯μ μ¬μ©νκ³ μ ν λ
μ΄ μ€λ²λΌμ΄λ©μ μ¬μ©νλ κ²μ΄λ€.
λκΈ