-
μ°Έμ‘° μλ£ν - κΈ°λ³Έ μμ±μ, μ€λ²λ‘λ©(overloading), returnκ°λ°/Java 2022. 3. 21. 22:32
μλ νμΈμ,
μ΄λ² μκ°μλ μ°Έμ‘°μλ£νμ λν΄ μμλ³΄κ² μ΅λλ€.
ν΄λΉ λ΄μ©μ 'μλ°μ μ ' chapter8λ₯Ό κΈ°μ΄λ‘ μμ±νμΌλ©°,
μ΄λ₯Ό κΈ°λ°μΌλ‘ μ λλ¦μ μμ½ μ 리λ₯Ό ν κΈμ λλ€.
μμΈν 곡λΆλ₯Ό μν΄μλ
λ¨Όμ μ± μ μ½κ³ , μ 리μ©μΌλ‘ μ°Έκ³ νμλ©΄ λ² μ€νΈμΌ κ² κ°μ΅λλ€!
κΈ°λ³Έμλ£νκ³Ό μ°Έμ‘°μλ£νμ κΈ°λ³Έμ λν λ΄μ©μ μ΄μ κ²μκΈμ νμΈνμλ©΄ λ©λλ€ :)
https://mong-dev.tistory.com/11
μ°Έμ‘°μλ£νμ 곡λΆνλ©΄μ λ€μκ³Ό κ°μ΄ μ΄ 7κ°μ§μ λν΄ μ 리ν μμ μΈλ°, κ°λ μ±μ μν΄ 3κ°μ§λ§ λ¨Όμ μμ±νκ³ , λλ¨Έμ§λ λ€μκΈλ‘ λκΈ°κ² μ΅λλ€ :)
β£ κΈ°λ³Έμμ±μ
β£ λ©μλ overloading
β£ return (λ©μλμμ κ° λ겨주기)
β‘ static λ©μλμ μΌλ° λ©μλμ μ°¨μ΄
β‘ static λΈλ‘
β‘ Pass by value, Pass by reference
β‘ λ§€κ° λ³μλ₯Ό μ§μ νλ νΉμ΄ν λ°©λ²κΈ°λ³Έμμ±μ
μλ°λ μμ±μλ₯Ό λ§λ€μ§ μμλ μλμΌλ‘ λ§λ€μ΄μ§λ κΈ°λ³Έ μμ±μκ° μμ΅λλ€.
λ€μ μμ€λ₯Ό 보며 λͺκ°μ§ νΉμ§μ λ§μλλ¦¬κ² μ΅λλ€.
public class ReferenceString { //1. κΈ°λ³Έ μμ±μ public ReferenceString() { } //2. String argλ₯Ό 맀κ°λ³μλ‘ ν μμ±μ public ReferenceString(String arg) { } //λ©μΈ λ©μλ public static void main(String args[]) { ReferenceString reference = new ReferenceString(); } }
λ©μΈ λ©μλλ₯Ό 보면, μ°λ¦¬κ° κ°μ²΄λ₯Ό μμ±ν λ new λ€μμ μλ ReferenceString()κ° μμ±μμ λλ€.
λ§μ½μ 1λ²κ³Ό 2λ²μ΄ μ무κ²λ μ ν μμ§ μμ μν©μ΄λΌλ©΄, 1λ²μ κΈ°λ³Έμμ±μλ‘ μμ±λλ€. μ¦, μλ¬΄λ° λ§€κ° λ³μκ° μλ ReferenceDefault()λΌλ μμ±μλ λ€λ₯Έ μμ±μκ° μμ κ²½μ° κΈ°λ³ΈμΌλ‘ μ»΄νμΌν λ λ§λ€μ΄μ§λλ€.
λν 1,2λ²μ²λΌ μμ±μλ 리ν΄νμ μ΄ μκ³ , ν΄λμ€ μ΄λ¦μΌλ‘ λμ΄ μμ΅λλ€.
κ·Έλ°λ°, λ§μ½μ 1λ²μ΄ μκ³ 2λ²λ§ μμ κ²½μ°μλ, λ©μΈ λ©μλμμ μ λ κ² νΈμΆν κ²½μ°, μ»΄νμΌ μλ¬κ° λ°μν©λλ€. λ€μ λ§ν΄μ, κΈ°λ³Έ μμ±μλ λ€λ₯Έ μμ±μκ° μμΌλ©΄ μλμΌλ‘ λ§λ€μ΄μ§μ§ μμ΅λλ€.
μμ±μλ ν΄λμ€μ λ€λ₯Έ λ©μλλ€ λ³΄λ€ μμ, κ°μ₯ μλΆλΆμ μ μΈνλ κ²μ΄ μ’μ΅λλ€.
κ·ΈλΌ μμ±μλ λͺκ°κΉμ§ λ§λ€ μ μμκΉμ?
μ λ΅μ μμ±μμ κ°―μμλ μ νμ΄ μμ΅λλ€. ν΄λμ€μ κ°μ²΄λ₯Ό λ³΄λ€ κ°νΈνκ² λ§λ€κΈ° μν΄μ μ¬λ¬κ°μ§ λ§€κ° λ³μλ₯Ό κ°λ μ¬λ¬ μμ±μλ₯Ό κ°μ§ μ μμΌλ©°, κ°―μλ 1κ°μ¬λ λκ³ 100κ°κ° λμ΄λ μκ΄μ΄ μλ€. λ€λ§, λ무 λ§μ΄ λ§λλ κ²½μ° κ΄λ¦¬κ° νλ€μ΄μ§λ―λ‘, κΌ νμμ λ§λ μμ±μλ§ λ§λλ μ΅κ΄μ λ€μ¬μΌλ§ ν©λλ€.
λ©μλ μ€λ²λ‘λ©(overloading)
μμμ μ΄ν΄λ³Έ κ²μ²λΌ ν΄λμ€μ μμ±μλ λ§€κ° λ³μλ€μ μλ‘ λ€λ₯΄κ² νμ¬ μ μΈν μ μμ΅λλ€. κ·Έλ λ€λ©΄ λ©μλλ μ΄λ κ² μ΄λ¦μ κ°κ² νκ³ λ§€κ° λ³μλ€μ λ€λ₯΄κ² νμ¬ λ§λ€ μ μμκΉμ? λΉμ°ν κ°λ₯ν©λλ€.
public class ReferenceOverloading { public static void main(String args[]) { ReferenceOverloading reference = new ReferenceOverloading(); } //1. public void print(int data) { } //2. public void print(String data) { } //3. public void print(int intData, String stringData) { } //4. public void print(String stringData, int intData) { } }
μμ 4κ°μ§ λ©μλλ μ΄λ¦μ λμΌ νμ§λ§, λͺ¨λ λ€λ₯Έ λ©μλμ²λΌ μΈμλλ€. ν΅μ¬ μ°¨μ΄λ λ§€κ° λ³μμ μ’ λ₯, κ°μ, μμκ° λ€λ₯΄λ€λ κ²μ΄λ€. λ§€κ° λ³μμ κ°μκ° κ°μλ νμ μ μμκ° λ€λ₯΄λ©΄ λ€λ₯Έ λ©μλμ²λΌ μΈμλλ€. μ¬κΈ°μ μ€μν κ²μ λ§€κ° λ³μμ μ΄λ¦μ΄ μλλΌ λ§€κ° λ³μμ νμ μ΄λ€. (맀κ°λ³μμ νμ μ΄ κ°κ³ λ³μμ μ΄λ¦μ΄ λ€λ₯΄λ©΄? κ°μ λ©μλλ‘ μΈμνλ€.)
μ΄μ κ°μ΄ λ©μλμ μ΄λ¦μ κ°λλ‘νκ³ , λ§€κ° λ³μλ§μ λ€λ₯΄κ² νλ κ²μ λ°λ‘ μ€λ²λ‘λ©(overloading)μ΄λΌκ³ ν©λλ€.
overloadλ "κ³Όμ νλ€. λΆνλ₯Ό μ£Όλ€." μ΄λ° μλ―Έκ° μλ λ¨μ΄μΈλ°μ, λ€μ λ§ν΄μ νλμ λ©μλ μ΄λ¦μ μ¬μ©νλ©΄μ μ¬λ¬ κΈ°λ₯μ μ 곡νλ€ νΉμ νλμ λ©μλ μ΄λ¦μΌλ‘ λ§μ λΆνλ₯Ό μ€λ€λΌκ³ μκ°ν΄λ³Όμλ μκ² μ΅λλ€.
κ°μ₯ μ¬μ΄ μλ₯Ό λ€μλ©΄, System.out.println()μ΄λΌλ λ©μλλ₯Ό μκ°ν΄λ³΄λ©΄ μ½μ΅λλ€. μ΄ λ©μλμ λ§€κ° λ³μλ‘, intλ§μ μ£Όλ, longλ§μ μ£Όλ, Stringλ§μ μ€λ λ©λλ€. intκ°μ μΆλ ₯ν΄μΌνλ€κ³ ν΄μ, System.out.printInt() μ΄λ°μμΌλ‘ λ³κ°μ λ©μλλ₯Ό μ¬μ©νμ§ μμ΅λλ€. μ΄κ² λ°λ‘ μ€λ²λ‘λ©μ μμ μ λλ€.
return
returnμ λ©μλμ κ°μ 리ν΄ν λ μ¬μ©νκ±°λ, 리ν΄κ°μ΄ μλ void λ©μλμΈ κ²½μ°μλ λ©μλμ μ’ λ£μ μλ―Έλ‘λ μ¬μ©ν μ μμ΅λλ€. κ°λ¨νκ² μ½λλ₯Ό 보면 λ μ΄ν΄κ° μ½μ΅λλ€.
public class ReferenceReturn { public static void main(String args[]) { ReferenceReturn reference = new ReferenceReturn(); System.out.println(reference.intReturn()); System.out.println(reference.intArrayReturn()); System.out.println(reference.stringReturn()); } public int intReturn() { int returnInt=0; return returnInt; } public int intArrayReturn() { int returnArray[]=new int[10]; return returnArray; } public String stringReturn() { String returnString="Return value"; return returnString; } }
μ€μ λ‘λ κ° λ©μλμμ κ³μ° μμ μ΄λ λ°μ΄ν° μ²λ¦¬λ₯Ό κ±°μΉ νμ 리ν΄μ ν΄μ£Όμ΄μΌ νμ§λ§, μμλ‘ κ°λ¨ν μ΄κΈ°νλ§ νκ³ λ¦¬ν΄ν΄μ£Όμμ΅λλ€.
- λ©μλ μ΄λ¦ μμ λ³μμ νμ μ μ§μ ν΄ μ£Όκ³ ,
- λ©μλ λ΄μμλ κ·Έ νμ μ μμ±νκ³ κ°κ³΅ν ν
- "return"μ΄λΌλ μμ½μ΄λ₯Ό μ¬μ©νμ¬ λ¦¬ν΄ν΄ μ£Όλ©΄
- μμ²ν λ©μλλ‘ κ·Έ κ°μ΄ μ λ¬λ©λλ€.
μ°Έκ³ λ‘ κΉλ¨Ήκ³ 리ν΄μ ν΄μ£Όμ§ μμ κ²½μ°, μ»΄νμΌ μλ¬κ° λ°μν©λλ€.
μμμ λ§μλλ Έλ―μ΄, returnμ μ΄λ κ² κ°μ 리ν΄νκΈ°λνμ§λ§, λ©μλμ μ’ λ£μ μλ―Έλ‘λ μ¬μ©νλ€κ³ νμ΅λλ€. returnμ μ§λκ² λλ©΄ λ©μλλ μ’ λ£νκ² λλλ°, κ·ΈλΌ return λ€μ μ½λκ° μλ€λ©΄ μ΄λ»κ² λ κΉμ? λ§μ΅λλ€. κ·Έ λ€μ μλ μ½λλ μ λ μ€νλ μΌμ΄ μκΈ° λλ¬Έμ "unreachable statement"λΌλ λ©μΈμ§μ ν¨κ» μ»΄νμΌ μλ¬κ° λ°μν©λλ€.
κ·ΈλΌ νλμ λ©μλλ νλμ νμ μ κ°λ§ 리ν΄ν΄μ£Όλλ°, μ¬λ¬ κ°λ₯Ό λ겨 μ£Όκ³ μΆμ λ μ΄λ»κ² ν κΉμ?
DTOμ κ°μ ν¨ν΄μ λ¦¬ν΄ νμ μΌλ‘ μ μΈν΄μ£Όλ©΄, μ¬λ¬ κ°μ λ°μ΄ν°λ₯Ό νλμ νμ μ λ£μ΄μ λκ²¨μ€ μ μκ² μ΅λλ€. (DTO : Data Transfer Object, λ°μ΄ν°λ₯Ό λ€λ₯Έ μλ²λ‘ μ λ¬νκΈ° μν λͺ©μ μΌλ‘ μ°μ΄λ μλ° ν¨ν΄. μ΄λ€ μμ±μ κ°λ ν΄λμ€λ₯Ό λ§λ€κ³ , κ·Έ μμ±λ€μ μ½κ² μ λ¬νκΈ° μν΄μ λ§λ λ€.)
λν 리ν΄κ°μ΄ μλ void λ©μλμμλ return λ€μ μ무κ²λμμ΄ λ°λ‘ μΈλ―Έμ½λ‘ μ μ μ΄μ£Όλ©΄, λ©μλ μ’ λ£μ μλ―Έλ‘ μ¬μ©ν μ μμ΅λλ€. κ°λ¨νκ² μ½λλ‘ λ³΄μ¬λλ¦¬κ² μ΅λλ€.
public void wantToStopInTheMiddle(boolean flag) { //μ½λ μλ΅ . . . if(flag) return; //μ½λ μλ΅ . . . }
κΈμ΄ κΈΈμ΄μ Έ, λ€μ κ²μκΈλ‘ λμ΄κ°λλ‘ νκ² μ΅λλ€ :)
κ°μ¬ν©λλ€!
https://mong-dev.tistory.com/13
'κ°λ° > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ μ°¨μ§ν₯μΈμ΄ VS κ°μ²΄μ§ν₯μΈμ΄ (0) 2022.04.10 μ€μ²©ν΄λμ€(Nested class)λ 무μμΈκ°? (0) 2022.04.07 λ³μ μ΄μΌκΈ°(2) - μλ°μ νμ (μλ£ν) (1) 2022.03.17 λ³μ μ΄μΌκΈ°(1) - μλ°μ 4κ°μ§ λ³μ (1) 2022.03.17 Collection(1) - List, Set, Map (2) 2022.02.22