Day 13(21.09.17) - Gomserker/Java-101 GitHub Wiki
19. μμ±μμ λ©μλ μ€λ²λ‘λ©(Overload)
(1) μμ±μμ μ€λ²λ‘λ©
μΈλΆμμ λ€μν λ°μ΄ν°κ° μ 곡λ λ, μ΄λ₯Ό μ΄μ©ν΄μ κ°μ²΄λ₯Ό μ΄κΈ°ν νλ €λ©΄ μμ±μλ λ€μν΄μ§ νμκ° μλ€. μλ₯Ό λ€μ΄, 곡μ₯μμ μλμ°¨λ₯Ό μ°μ΄λΈλ€κ³ κ°μ ν λ, λͺ¨λΈλͺ
λ§ λ€μ΄μ€κ±°λ, λͺ¨λΈλͺ
κ³Ό μμμ΄ κ°μ΄ λ€μ΄μ€κ±°λ, μμλ§ λ€μ΄μ¨λ€κ³ ν΄μ μλμ°¨λ₯Ό μ λ§λ€μλ μλ λ
Έλ¦ μλκ°? λ§μ°¬κ°μ§λ‘ μμ±μκ° νλλ°μ μλ€λ©΄ λ€μν λ°μ΄ν°λ₯Ό νμ©νκΈ°μ μ΄λ €μμ΄ λ°μν μ μλ€. μμ±μμ μ€λ²λ‘λ©μ μ΄λ΄λ μ¬μ©νλ κ²μΌλ‘, λ§€κ°λ³μλ₯Ό λ¬λ¦¬νλ μμ±μλ₯Ό μ¬λ¬κ° μ μΈνλ κ²μ λ§νλ€.
λ€μμ Car ν΄λμ€μμμ μμ±μ μ€λ²λ‘λ μμμ΄λ€.
public class Car {
Car() {} // κΈ°λ³Έ μμ±μ
Car(String model) {}
Car(String model, String color){}
Car(String model, String color, int maxSpeed){}
}
μ¬κΈ°μ λμ λλ μ μ, μμμ λ§νλ―μ΄ μμ±μλ§λ€ λ§€κ°λ³μμ μ’ λ₯κ° λ€λ₯΄λ€λ μ μ΄λ€. μ΄ λΆλΆμ μμ±μ μ€λ²λ‘λμμ μ€μν λΆλΆμΈλ°, λ§€κ° λ³μμ μμλ§ λ€λ₯΄κ³ λμΌν κ²½μ°μ μμ±μ μ€λ²λ‘λ©μ΄λΌκ³ λ³Ό μ μλ€. μ¦, μμ μμ±μμ
Car (String color, String model){}
μ΄ μμ±μλ₯Ό μ μΈνλ€κ³ ν΄λ μμ±μ μ€λ²λ‘λ©μ ν΄λΉνμ§ μκ³ μ»΄νμΌ μλ¬κ° λ°μνκ² λλ€. λ€μ μμλ μμ μμλ‘ λ μμ±μ μ€λ²λ‘λ©μ μ¬μ©νμ¬ μ¬λ¬κ°μ κ°μ²΄λ₯Ό μμ±νλ νλ‘κ·Έλ¨μ μμ±ν κ²μ΄λ€.
Result
car1.company: Hyundai
car2.company: Hyundai
car2.model: Avante
car3.company: Hyundai
car3.model: Grandeur
car3.color: Red
car4.company: Hyundai
car4.model: Sonata
car4.color: Silver
car4.maxSpeed: 200
μ μμλ₯Ό ν΅ν΄ Car() μμ±μμ μ€λ²λ‘λ©μ μ¬μ©ν¨μΌλ‘μ¨ ν μμ±μλ‘ λ€μν κ°μ²΄λ₯Ό μμ±ν μ μλ κ²μ νμΈν μ μλ€.
(2) λ©μλμ μ€λ²λ‘λ©
μμ±μμ λ§μ°¬κ°μ§λ‘ λ©μλμ μ€λ²λ‘λ© λν ν΄λμ€ λ΄μ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬λ¬κ° μ μΈνλ κ²μ λ»νλ€. λ©μλ μ€λ²λ‘λ©μ 쑰건μ λ§€κ° λ³μμ νμ , κ°―μ μ€μμ νλκ° λ¬λΌμΌ νλ€. λ€μ μμλ₯Ό νμΈν΄λ³΄μ.
int plus(int x, int y) {
int result = x + y);
return result;
}
μ plus() λ©μλλ₯Ό νΈμΆνκΈ° μν΄μλ μ μ ννμ κ°μΈ λ§€κ°μ²΄κ° λ κ° νμνλ€. νμ§λ§ μΈμλ§μ¬ λ§μ μ μ μλ§ μλ κ²μ΄ μλλ€. μ€μλ₯Ό λν λλ μκ³ , μ μμ μ€μλ₯Ό λν λλ μλ€. μ΄λ΄ κ²½μ°μ μ plus() λ©μλλ μ¬μ©ν μ μλ€. λ§€κ°λ³μκ° μ€μλ₯Ό λ°μ§μκΈ° λλ¬Έμ΄λ€. μ΄λ΄λ λ©μλ μ€λ²λ‘λ©μ ν΅ν΄ double νμ μ λ§€κ°μ²΄λ‘ λ°λ plus() λ©μλλ₯Ό νλ λ μμ±νλ©΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
double plus(double x, double y) {
double result = x + y;
return result;
}
μ΄λ κ² κ°μ μ΄λ¦μΌλ‘ μμ±λ(μ€λ²λ‘λ©) λ©μλλ₯Ό νΈμΆν κ²½μ° JVMμ λ§€κ°κ°μ νμ
μ λ³΄κ³ λ©μλλ₯Ό μ ννλ€. μ μ λ κ°λ₯Ό μ
λ ₯νλ©΄ μμ λ©μλλ₯Ό, μ€μ λκ°λ₯Ό μ
λ ₯νλ©΄ μλ λ©μλλ₯Ό μ ννλ κ²μ΄λ€. νμ§λ§ μ΄ κ²½μ°μ x κ°μ μ μλ₯Ό, y κ°μ μ€μλ₯Ό μ
λ ₯ν κ²½μ°μλ μ΄λ»κ² νλλ λΉμ°ν μλ¬Έμ κ°μ§ μ μλ€. νμ§λ§, JVMμ μλ plus() λ©μλλ₯Ό μ ννλ€. λ§€κ° λ³μμ νμ
μ΄ μΌμΉνμ§ μμ κ²½μ°μ μλ νμ
λ³ν(μ€ν μΊμ€ν
)μ΄ κ°λ₯νμ§λ₯Ό κ²μ¬νκΈ° λλ¬Έμ΄λ€. λ°λΌμ, int νμ
μ double νμ
μΌλ‘ λ³νμ΄ κ°λ₯νλ―λ‘ μλμ plus() λ©μλκ° μ νλλ κ²μ΄λ€.
λ€μμ μ«μ νλλ₯Ό λ°μΌλ©΄ μ μ¬κ°νμ λμ΄λ₯Ό, λκ°λ₯Ό λ°μΌλ©΄ μ§μ¬κ°νμ λμ΄λ₯Ό κ³μ°νμ¬ μΆλ ₯νλ νλ‘κ·Έλ¨μ μμμ΄λ€. μ μ¬κ°νκ³Ό μ§μ¬κ°νμ μμ΄λ λ€λ₯΄μ§λ§ λ©μλ μ€λ²λ‘λ©μ μμλ₯Ό λ€κΈ° μν¨μ΄λ λμ΄κ°λλ‘ νμ.
Result
area of square : 100.0
area of rectangle : 40.0
μ μμμ μ½λμμ νμΈν μ μλ―, μ λ ₯λ λ§€κ°κ°μ μ μνμ΄μ§λ§ μ€μλ‘ μλλ³ν λμ΄ μ€μ κ°μ λ±μ΄λΈλ€.
20. Staticκ³Ό Static member
staticμ 'μ μ , κ³ μ λ'μ΄λ μλ―Έμ΄λ€. static memberλ ν΄λμ€μ κ³ μ λ λ©€λ²λ‘, κ°μ²΄λ₯Ό μμ±νμ§ μκ³ μ μ¬μ©ν μ μλ νλμ λ©μλλ₯Ό λ§νλ€. μ΄λ₯Ό κ°κ° static field(μ μ νλ), static method(μ μ λ©μλ)λΌκ³ λΆλ₯Έλ€. λν κ°μ²΄μ μμλ λ©€λ²κ° μλλΌ ν΄λμ€μ μμλ λ©€λ²μ΄κΈ° λλ¬Έμ class memberλΌκ³ λ νλ€.
μ΄ μ μ νλμ μ μ λ©μλλ ν΄λμ€ λ‘λκ° ν΄λμ€λ₯Ό λ‘λ©ν΄μ λ©μλ λ©λͺ¨λ¦¬ μμμ μ μ¬ν λ ν΄λμ€ λ³λ‘ κ΄λ¦¬λλ€. λλ¬Έμ ν΄λμ€μ λ‘λ©μ΄ λλλ©΄ λ°λ‘ μ¬μ©ν μ μλ κ²μ΄λ€.
(1) static member μ μΈ
μ μ νλμ λ©μλλ₯Ό μ μΈνλ λ°©λ²μ κ°κ°μ μ μΈν λ static ν€μλλ₯Ό λΆμ¬μ£Όλ©΄ λλ€.
public class ClassName {
//static field
static classtype field ();
//static method
static returntype method() {}
μ¬κΈ°μ νλλ₯Ό κ°μ²΄μ νλλ‘ μ μΈν κ²μΈκ°, μλλ©΄ μ μ νλλ‘ μ μΈν κ²μΈκ°μ νλ¨ κΈ°μ€μ, κ°μ²΄λ§λ€ λ³κ°λ‘ κ°μ§κ³ μμ΄μΌ ν λ°μ΄ν°λΌλ©΄ κ°μ²΄μ νλλ‘ μ μΈνκ³ , κ°μ²΄λ§λ€ κ°μ§κ³ μμ νμμ±μ΄ μλ 곡μ©μ μΈ λ°μ΄ν°λΌλ©΄ μ μ νλλ‘ μ μΈνλ κ²μ΄ μ’λ€. μλ₯Ό λ€μ΄ νμ΄(3.141592...)μ κ²½μ°, μΈμ μ΄λμλ λκ° μ¬μ©νλλΌλ κ°μ λ³νμ§ μλ 곡μ©μ μΈ λ°μ΄ν°μ΄λ―λ‘ μ μ νλλ‘ μ μΈνλ κ²μ΄ μ’λ€.
λ©μλ λν κ°μ²΄ λ©μλλ‘ μ μΈν κ²μΈκ°, μ μ λ©μλλ‘ μ μΈν κ²μΈκ°μ νλ¨ κΈ°μ€μ΄ μλλ°, κ°μ²΄ νλλ₯Ό μ΄μ©ν΄μ μ€ννλ€λ©΄ κ°μ²΄ λ©μλλ‘, κ°μ²΄ νλλ₯Ό μ¬μ©νμ§ μλλ€λ©΄ μ μ λ©μλλ‘ μ μΈνλ€. μλ₯Ό λ€μ΄, κ³μ°κΈ° ν΄λμ€λ₯Ό μμ±νλ€κ³ κ°μ ν λ, λ§μ κ³Ό λΊμ μ κ²½μ°μ μΈλΆμμ μ£Όμ΄μ§ λ§€κ°κ°μ κ°μ§κ³ μμ μ μννλ―λ‘ μ μ λ©μλλ‘ μ μΈνλ κ²μ΄ μ’λ€. νμ§λ§ κ³μ°κΈ°μ μκΉμ΄λ κ°κ²© λ±μ μ€μ νλ λ©μλλ κ°μ²΄ λ©μλλ‘ μ μΈν΄μΌ νλ€.
(2) μ μ λ©€λ²μ μ¬μ©
ν΄λμ€κ° λ‘λ©λλ©΄ μ μ λ©€λ²λ₯Ό λ°λ‘ μ¬μ©ν μ μλλ°, ν΄λμ€ μ΄λ¦κ³Ό ν¨κ» λνΈ(.) μ°μ°μλ‘ μ κ·Όνλ€. μλ₯Ό λ€μ΄,
public class Calculator {
static double pi = 3.141592;
static int plus(int x, int y) {...}
static int minus(int x, int y) {...}
}
μμ κ°μ΄ ν΄λμ€κ° μμ±λμλ€λ©΄, μ μ νλ piμ μ μ λ©μλ plusμ minusλ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μλ€.
double result1 = 10 * 10 * Calculator.pi;
int result2 = Calculator.plus(10,5);
int result3 = Calculator.minus(10,5);
μμΉμ μΌλ‘λ μμ κ°μ΄ ν΄λμ€ μ΄λ¦μ μ¬μ©ν΄μ μ κ·Όν΄μΌ νλ, κ°μ²΄λ₯Ό μμ±ν λ€, μ°Έμ‘° λ³μλ‘λ μ κ·Όμ΄ κ°λ₯νλ€. νμ§λ§ κ°κΈμ μ΄λ©΄ ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Όνλλ‘ νμ. μ΄ν΄λ¦½μ€μμλ μ μ΄μ μ μ λ©€λ²λ₯Ό μ°Έμ‘°λ³μλ‘ μ κ·Όνλ©΄ κ²½κ³ νμκ° λ¬λ€. λ€μ μμλ μ μ λ©€λ²λ₯Ό μ¬μ©ν κ³μ°κΈ° ν΄λμ€λ₯Ό μμ±ν κ²μ΄λ€.
Result
result1: 314.159
result2: 15
result3: 5
---------------------------
result4: 314.159
result5: 15
result6: 5
μ μμμμ νμΈν μ μλ―, μ°Έμ‘° λ³μλ₯Ό μ¬μ©ν΄μ μ μ λ©€λ²μ μ κ·Όν μ μμΌλ, κ°κΈμ μ΄λ©΄ ν΄λμ€λͺ μ μ¬μ©ν΄ νΈμΆνλλ‘ νμ.