π€ λΉμ·ν μ΄λ¦, μ ν λ€λ₯Έ μ¬μ©λ²
μ€λ²λ‘λ©κ³Ό μ€λ²λΌμ΄λ©μ λͺ μΉλ§ 보면 μλΉν λΉμ·ν μμ μ μνν κ² κ°λ€. νμ§λ§ λμ μ ν μ ν μ ν μ ν λ€λ₯Έ μμ μ μννλ€. μ§κΈλΆν° κ·Έ μ°¨μ΄λ₯Ό μμ보λλ‘ νμ.
πμ€λ²λ‘λ© (overloading)
λ©μλλ₯Ό μ€λ²λ‘λ©νλ€λ κ²μ μΈμ΄ κ·Έλλ‘ λ³΄λ©΄ μ€νλ € μ΄λ €μΈ μ μλ€. κ°λ¨ν κ°λ λ§ λ³΄μλ©΄, λ€λ₯Έ νλΌλ―Έν°κ° νμν κ°μ μ΄λ¦μ λ©μλλ₯Ό λ§λλ κ²μ΄λΌκ³ 보면 λλ€.
public class Overloading {
String id;
String name;
int count;
public Overloading(String id, String name) {
this.id = id;
this.name = name;
this.count = 0;
}
public Overloading(String id, String name, int count) {
this.id = id;
this.name = name;
this.count = count;
}
public void exam(String field) {
System.out.println(field);
}
public void exam(Integer number) {
System.out.println(number);
}
}
μ½λλ₯Ό 보면 μ΄ν΄κ° μ½λ€. Overloading λ©μλλ μμ±μ λ©μλμΈλ°, νλΌλ―Έν°μ μ«μμ νμ λ€μ΄ λ€λ₯΄κ² μ€μ λμ΄ μλ€. λ§μ½ νλΌλ―Έν°κ° μλ μλ μ€ μ΄λ νλμ κ°μΌλ©΄ μλ¬κ° λ°μνλ€. λν, examλ©μλλ₯Ό 보면 κ°μ μμ νλΌλ―Έν°λ₯Ό κ°κ³ μμ§λ§, νμ μ΄ λ€λ₯Έ κ²μ λ³Ό μ μλ€. μ΄ λν νμ μ΄ κ°μΌλ©΄ μλ¬κ° λ°μνλ€.
λ€λ§, μ€λ²λ‘λ© μ κ²μ¬νλ κ²μ νλΌλ―Έν°μ κ°μμ νμ μ΄λ€. μ¦, κ°μκ° κ°μΌλ©΄ νμ μ΄ λ€λ₯Έ νλΌλ―Έν°κ° μ‘΄μ¬νλ©΄ λκ³ , νμ μ΄ λ€λ₯΄λ©΄ μ΄λ¦μ κ°μλ λλ€λ κ²μ΄λ€. κ·Έλμ exam λ©μλμ fieldλ numberλ ν¬κ² μν₯μ λ―ΈμΉμ§ μλλ€. (number -> fieldλ‘ λ°λμ΄λ μκ΄μ΄ μμ)
κ·Έλ λ€λ©΄ μλ°λ μ μ΄λ¬ν λ°©μμ μ§μν κΉ? λ°λ‘ λ€νμ±μ νννλ λ°©λ² μ€ ν κ°μ§μ΄κΈ° λλ¬Έμ΄λ€.
public class Overloading {
static int add(int i, int j) {
return i + j;
}
static int add(int i, int j, int k) {
return i + j + k;
}
public static void main(String[] args) {
int i = add(1 ,2);
int j = add(1, 2, 3);
System.out.println(i + j);
}
}
μ΄λ κ² λμΌν μ΄λ¦μΌλ‘ κ°κ° λ€λ₯Έ μλ₯Ό κ³μ°ν΄λ΄λ λ©μλλ₯Ό ꡬνν μ μλ κ²μ΄λ€. 보ν΅μ μμ±μ λ©μλμμ μ΄λ€ μ 보λ₯Ό λ£κ³ μ΄λ€ μ 보λ₯Ό λλκ³ μμ±ν μ§ μ ν λ λ§μ΄ μ¬μ©λλ νΈμ΄κΈ°λ νλ€.
π μ€λ²λΌμ΄λ© (Overriding)
μ€λ²λΌμ΄λ©μ μ ν λ€λ₯Έ κ°λ μΌλ‘ κ°λ¨νκ² λ³΄λ©΄, λ€λ₯Έ ν΄λμ€μμ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬μ μνλ κ²μ΄λ€.
@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
default Comparator<T> reversed() {
return Collections.reverseOrder(this);
}
}
Javaμ Comparator μΈν°νμ΄μ€μ μΌλΆ μ½λλ₯Ό κ°μ Έμλ€. 보면 compare λ©μλλ μΆμ λ©μλλ‘ λ³Έλ¬Έμ΄ κ΅¬νλμ΄ μμ§ μκ³ , reversed λ©μλλ collectionλ€μ μμμΌλ‘ μ λ ¬νλ λ©μλλ‘ μ μλμ΄ μλ€. μ΄λ₯Ό λ€λ₯Έ ν΄λμ€μμ μ¬μ μν΄μ μ¬μ©νκ³ μ ν λ μλμ κ°μ΄ μ¬μ©νλ€.
import java.util.Collections;
import java.util.Comparator;
public class Overriding implements Comparator {
@Override
public int compare(Object o1, Object o2) {
int result = 1;
if (o1.equals(o2)) {
result = 0;
}
return result;
}
@Override
public Comparator reversed() {
//λ¦μ μκ° μ
λ‘λλ‘ μΈν΄ λ°λ‘ λ‘μ§μ ꡬννμ§ μμλ€.
}
}
μμ²λΌ μνΌν΄λμ€μ λ©μλλ€μ μ¬μ©μκ° μ¬μ μν΄μ ꡬννλ©΄ λλ€. κΌ μΆμλ©μλμλ§ μ¬μ©λλ κ²μ΄ μλκ³ , κΈ°μ‘΄μ μΌλ° λ©μλλ₯Ό μλΈν΄λμ€μμ μ¬μ μνλ€λ©΄, μλΈν΄λμ€ κ°μ²΄λ₯Ό ν΅ν΄ μ¬μ©ν λλ μλΈν΄λμ€μ λ©μλ μ μλ₯Ό μ°μ μ μΌλ‘ μ¬μ©νκ² λλ€.
λ κ°λ λ€ κ²μΌλ‘λ§ λ³΄κ³ μ΄ν΄νκΈ°μλ κ·Έλ€μ§ μ΄λ €μ΄ κ°λ μ μλλ€. μλ°λ₯Ό 곡λΆνλ μ¬λμ΄λΌλ©΄ μ€λ²λΌμ΄λ©κ³Ό μ€λ²λ‘λ©μ μ°¨μ΄λ κΌ μκ³ νλ‘κ·Έλλ°νκΈ°λ₯Ό λ°λλ€.
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] 곡λ³μ± A/S (feat. μμκ³Ό μ€λ²λΌμ΄λ©) (0) | 2024.08.05 |
---|---|
[Java] μλ°μ νλΌλ―Έν° (0) | 2022.09.27 |
[Java] Finallyμ (1) | 2022.09.24 |
[Java] λ΄κ° μμΈλ₯Ό 'λμ§λ' λ² (2) | 2022.09.22 |
[Java] μμΈλ₯Ό λ€λ£¨λ λͺ κ°μ§ λ°©λ² (2) | 2022.09.21 |