π Java λ€νμ±
βοΈ λ€νμ± μ΄λ νλμ ν¨μ, ν΄λμ€κ° λ€μν λ°©λ²μΌλ‘ λμνλ κ²μ λ§νλ€. Javaμμλ μ£Όλ‘ μ€λ²λ‘λ©(Overloading)κ³Ό μ€λ²λΌμ΄λ©(Overriding) μ ν΅ν΄μ λ€νμ±μ μ§μνλ€.
π± μ€λ²λ‘λ©(Overloading) : νμ₯
βοΈ ν¨μκ° μ¬λ¬ κ°μ λμΌν μ΄λ¦μ κ°μ§λ©° 맀κ°λ³μμ μ νκ³Ό κ°μ κ° λ€λ₯΄κ² μ€μ λμ΄ μ¬μ©νλ κ²μ μλ―Ένλ€.
βοΈ μ€λ²λ‘λ©μ ν¨μ μ€λ²λ‘λ© κ³Ό μμ±μ μ€λ²λ‘λ© μ΄ μμΌλ©° μ€μ μ μ©λλ κ²μ κ°λ€. κ°μ μ΄λ¦μ ν¨μλ₯Ό μ¬λ¬ κ° μ μνκ³ , 맀κ°λ³μμ μ νκ³Ό κ°μλ₯Ό λ€λ₯΄κ² νμ¬ λ€μν μ νμ νΈμΆμ μλ΅ν μ μκ² νλ λ°©μμ΄λ€.(μΌλ°μ μΌλ‘ νλμ ν΄λμ€ μμ λμΌν μ΄λ¦μ ν¨μλ₯Ό μμ±νκ² λλ©΄ μλ¬κ° λ°μνλ€.)
β€ μ€λ²λ‘λ© μμ
public class Overloading {
public void overloading() {
System.out.println("맀κ°λ³μ μλ ν¨μ");
}
public void overloading(int a, int b) {
System.out.println("intν μΈμ 2κ°λ₯Ό μμ²νλ ν¨μ: " + a + ", " + b);
}
public void overloading(String str) {
System.out.println("Stringν μΈμ 1κ°λ₯Ό μμ²νλ ν¨μ: " + str);
}
}
public class App {
public static void main(String[] args) throws Exception {
Overloading old = new Overloading();
old.overloading();
old.overloading(2, 3);
old.overloading("λ¬Έμν μ€λ²λ‘λ© ν¨μ");
}
}
β€ μ€λ²λ‘λ© νΉμ§
βοΈ μ€λ²λ‘λ©μ νΉμ§μ μ κ·Ό μ μ΄μλ₯Ό μμ λ‘κ² μ§μ ν μ μλ€.
- μ€λ²λ‘λ©λ κ° ν¨μμ μ κ·Ό μ μ΄μλ₯Ό public, default, protected, privateμΌλ‘ λ€λ₯΄κ² μ§μ ν΄ μ€λ 무κ΄νλ€. νμ§λ§ κ°μ 맀κ°λ³μ κ°μμ νμ
μ κ°μ§λ©΄μ μ κ·Ό μ μ΄μλ§ λ€λ₯΄κ² νλ€κ³ μ€λ²λ‘λ©μ΄ λμ§λ μλλ€.
- 맀κ°λ³μλ λμΌνκ³ λ°ν νμ
μ΄ λ€λ₯Έ κ²½μ°λ μ€λ²λ‘λ©μ΄ μ±λ¦½λμ§ μλλ€.
β€ μ€λ²λ‘λ©μ μ¬μ©νλ μ΄μ
- κ°μ κΈ°λ₯μ νλ ν¨μλ₯Ό νλμ μ΄λ¦μΌλ‘ μ¬μ©ν μ μλ€.
- ν¨μμ μ΄λ¦μ μ μ½ν μ μλ€.
βοΈ λ§μ΄ μ¬μ©νλ println() ν¨μλ μ€λ²λ‘λ© λμ΄ μκΈ° λλ¬Έμ intν, Stringν, booleanν, charν μΈμ λͺ¨λ λ°μμ λμν μ μλ€.
βοΈ λ§μ½ μ€λ²λ‘λ©μ μ΄μ©νμ§ μλλ€λ©΄ printlnInt(), printlnString() λ± κ°κ° ν¨μμ μ΄λ¦μ λ°λ‘ λ§λ€μ΄μ€μΌ νλ€.
π± μ€λ²λΌμ΄λ©(Overriding) : μ¬μ μ
βοΈ μμ ν΄λμ€κ° κ°μ§κ³ μλ λ©μλλ₯Ό νμ ν΄λμ€κ° μ¬μ μν΄μ μ¬μ©νλ κ²μ μλ―Ένλ€.
βοΈ μμ ν΄λμ€κ° κ°μ§κ³ μλ λ©€λ² λ³μκ° νμ ν΄λμ€λ‘ μμλλ κ²μ²λΌ μμ ν΄λμ€κ° κ°μ§κ³ μλ ν¨μλ νμ ν΄λμ€λ‘ μμλμ΄ νμ ν΄λμ€μμ μ¬μ©ν μ μλ€.
- μμλ°μ ν¨μλ₯Ό κ·Έλλ‘ μ¬μ©ν μ μκ³ , νμμ λ°λΌ μ¬μ μνμ¬ μ¬μ©ν μ μμ
class Parent {
public void overriding() {
System.err.println("λΆλͺ¨ λ©μλ λ΄μ©");
}
}
class Child extends Parent{
@Override
public void overriding() {
super.overriding();
System.err.println("λΆλͺ¨ ν΄λμ€μ ν¨μλ₯Ό μμλ°μ ν¨μ");
}
}
public class App {
public static void main(String[] args) throws Exception {
Parent parent = new Parent();
parent.overriding();
Child child = new Child();
child.overriding();
}
}
β€ μ€λ²λΌμ΄λ© νΉμ§
- μμ ν΄λμ€μ ν¨μλ³΄λ€ μ κ·Ό μ μ΄μλ₯Ό λ μ’μ λ²μλ‘ λ³κ²½ν μ μλ€.
- μμ ν΄λμ€μ ν¨μλ³΄λ€ λ ν° λ²μμ μμΈλ₯Ό μ μΈ ν μ μλ€.
- μμ ν΄λμ€μ static ν¨μλ ν΄λμ€μ μνλ ν¨μμ΄κΈ° λλ¬Έμ μμλμ§ μκ³ μ€λ²λΌμ΄λ λμ§λ μλλ€.(static ν¨μλ λ€νμ±μ΄ μ μ©λμ§ μλλ€.)
- finalμ΄ μ§μ λ ν¨μ μμ μ€λ²λΌμ΄λλ₯Ό ν μ μμΌλ©°, private μ κ·Ό μ μ΄μλ₯Ό κ°μ§ ν¨μλ μμ μμ²΄κ° λΆκ°λ₯νλ€.
β€ @Overrde μ΄λ
Έν
μ΄μ
βοΈ
βοΈ @Override μ΄λ
Έν
μ΄μ
μ΄ μ μ©λμ§ μμ μνμμλ μ μ μ€λ²λΌμ΄λ ν λ©μλκ° μ
λ°μ΄νΈ μ΄ν κ·Έλ₯ μΆκ°μ μΈ λ©μλλ‘ μΈμλμ΄ μ»΄νμΌ μ€λ₯κ° λ°μνμ§ μλλ€. μ΄λ @Override μ΄λ
Έν
μ΄μ
μ μ μ©ν¨μΌλ‘μ¨ μλμ μΌλ‘ μ»΄νμΌ μ€λ₯λ₯Ό μΌμΌμΌ μλλ°©μμ΄ λ°λλ κ²μ λλΉν μ μλ€.
βοΈ λν @Overrideλ₯Ό νμν¨μΌλ‘μ¨ μ½λ λ¦¬λ© μμ ν΄λΉ λ©μλκ° μ€λ²λΌμ΄λ©νμλ€λ κ²μ μ½κ² νμ
ν μ μλ€λ μ₯μ μ΄ μλ€.