Overloading
μλ―Έ
κ³Όμ νλ€, κ³ΌλΆνλΌλ overloadμ λ»μμ μ μΆν΄λ³΄λ©΄ 무μΈκ°λ₯Ό λ μ£λ, μΉλ κ·Έλ¦Όμ΄ κ·Έλ €μ§λ€. λΉμ·νκ² μ€λ²λ‘λ©λ ν ν΄λμ€ λ΄μ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬λ¬ κ° μ μνλ κ²μ μλ―Ένλ€. λ©μλλ€μ΄ λͺ¨λ κ°μ μΌμ νμ§λ§ 맀κ°λ³μλ₯Ό λ¬λ¦¬ν΄μΌνλ κ²½μ° λ©μλ μ΄λ¦μ κ°κ³ 맀κ°λ³μλ₯Ό λ€λ₯΄κ² νμ¬ μ€λ²λ‘λ©μ ꡬννλ€.
쑰건
μ€λ²λ‘λ©μ΄ μ±λ¦½νκΈ° μν 쑰건μ μλμ κ°λ€.
- λ©μλ μ΄λ¦μ΄ κ°μμΌ νλ€.
- 맀κ°λ³μμ κ°μ λλ νμ μ΄ λ¬λΌμΌ νλ€.
- 맀κ°λ³μλ κ°κ³ 리ν΄νμ
μ΄ λ€λ₯Έ κ²½μ°λ μ€λ²λ‘λ©μ΄ μ±λ¦½λμ§ μλλ€.
(리ν΄νμ μ μ€λ²λ‘λ©μ ꡬννλλ° μλ¬΄λ° μν₯μ μ£Όμ§ λͺ»νλ€.)
μμ 쑰건λ€μ λ§μ‘±μν€μ§ λͺ»νλ©΄ μ€λ²λ‘λ©μ΄ μλ μ€λ³΅μ μλ κ²μΌλ‘ κ°μ£Όλμ΄ μλ¬κ° λ°μνλ€.
μμ
int add(int a, int b) { return a+b; }
int add(int x, int y) { return a+b; }
μ°μ λ λ©μλμ μ΄λ¦μ λͺ¨λ addλ‘ μ±λ¦½ 쑰건 1λ²μ λΆν©νλ€. νμ§λ§ μ±λ¦½ 쑰건 2λ²μ 보면 λͺ¨λ intν λ³μ 2κ°λ₯Ό 맀κ°λ³μλ‘ λ°κ³ , intνμΌλ‘ λ°νλ°κΈ° λλ¬Έμ λΆν©νμ§ μλλ€.
int add(int a, int b) { return a+b; }
long add(int a, int b) { return (long)(a+b); }
μμ λΉμ·νκ² 1λ² μ‘°κ±΄μλ λ§μ§λ§ 2λ², 3λ² μ‘°κ±΄ λͺ¨λ μΌμΉνμ§ μλλ€. intν λ§€κ° λ³μ 2κ°λ₯Ό λ°κΈ° λλ¬Έμ add(3,3)λ₯Ό νΈμΆνμμ λ μ΄λ€ λ©μλκ° νΈμΆλ κ²μΈμ§ κ²°μ ν μ μλ€.
long add(int a, long b) { return a+b; }
long add(long a, int b) { return a+b; }
μ΄λ²μ 1λ² μ‘°κ±΄μ μΌμΉνκ³ 2λ²μ? 맀κ°λ³μμ κ°―μλ 2κ°, νμ μ λλ€ int νλ, long νλμ΄λ€. νμ§λ§ μλ‘ μμκ° λ€λ₯΄κΈ° λλ¬Έμ νΈμΆ μμ 맀κ°λ³μμ κ°μΌλ‘ νΈμΆλ λ©μλκ° κ΅¬λΆμ΄ λλ€.
μ₯μ
λ©μλκ° λ³μμ²λΌ λ©μλμ μ΄λ¦λ§μΌλ‘ ꡬλ³λλ€λ©΄ κ·Όλ³Έμ μΌλ‘ κ°μ κΈ°λ₯μ νλ λ©μλλ€μ΄μ§λ§ μλ‘ λ€λ₯Έ μ΄λ¦μ κ°μ ΈμΌ νλ€. λ©μλλ₯Ό μμ±ν λ μλͺ νκΈ°λ μ΄λ ΅κ³ λ©μλλ₯Ό μ¬μ©ν λλ μ΄λ¦μ μΌμΌμ΄ κΈ°μ΅νκΈ° μ΄λ €μΈ κ²μ΄λ€. νμ§λ§ κ°μ κΈ°λ₯μ νλ λ©μλλ€μ λν΄ λμΌν μ΄λ¦μ μ°κ² νλ©΄ κΈ°μ΅νκΈ°λ μ©μ΄νκ³ μ΄λ¦λ§ λ³΄κ³ λ κ°μ κΈ°λ₯μ ν κ²μ΄λΌκ³ μμΈ‘νκΈ°λ μ½λ€.
Overriding
μλ―Έ
μ‘°μ ν΄λμ€λ‘λΆν° μμλ°μ λ©μλμ λ΄μ©μ λ³κ²½νλ κ²μ΄λ€.
쑰건
μμ ν΄λμ€μμ μ€λ²λΌμ΄λ©νλ λ©μλλ μ‘°μ ν΄λμ€μ λ©μλμ μλμ 3κ°μ§ 쑰건μ λ§μ‘±ν΄μΌνλ€.
- μ΄λ¦μ΄ κ°μμΌ νλ€.
- 맀κ°λ³μκ° κ°μμΌ νλ€.
- 리ν΄νμ μ΄ κ°μμΌ νλ€.
μ¦, λ©μλμ μ μΈλΆκ° μλ‘ μΌμΉν΄μΌνλ€. λ€λ§ μ κ·Ό μ μ΄μμ μμΈλ μ νλ 쑰건 νμμλ§ λ€λ₯΄κ² λ³κ²½ν μ μλ€. μλλ μ νλ 쑰건μ΄λ€.
- μ κ·Ό μ μ΄μλ μ‘°μ ν΄λμ€μ λ©μλλ³΄λ€ μ’μ λ²μλ‘ λ³κ²½ν μ μλ€.
(μ’μ -> λμ: private -> (default) -> protected -> pubilc) - μ‘°μ ν΄λμ€μ λ©μλλ³΄λ€ λ§μ μμ μμΈλ₯Ό μ μΈν μ μλ€.
- μΈμ€ν΄μ€ λ©μλλ₯Ό static λ©μλλ‘, static λ©μλλ₯Ό μΈμ€ν΄μ€ λ©μλλ‘ λ³κ²½ν μ μλ€.
Class Parent {
void parentMethod() throws IOException, SQLException {
// ..
}
}
Class Child extends Parent {
void parentMethod() throws Exception {
// ..
}
}
Childμμ Parentλ³΄λ€ μ μ μμ μμΈλ₯Ό μ μΈνμ§λ§ Exceptionμ λͺ¨λ μμΈμ μ΅κ³ μ‘°μμΌλ‘ κ°μ₯ λ§μ κ°μμ μμΈλ₯Ό λμ§ μ μλ€.
μ΄κ²μ 2λ²μ 쑰건μ μλ°°λλ€. λ°λΌμ λ¨μ§ μ μΈν μμΈμ κ°―μκ° μ μΌλ©΄ λλ κ²μ΄ μλλ€.
μ°Έκ³ μλ£
Javaμ μ μ (2nd Edition) - λ¨κΆ μ±
'Android & Kotlin' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ΄λ³΄λ΄λ²] Classes | Kotlin (0) | 2022.03.03 |
---|---|
[λ΄λ³΄λ΄λ²] Inheritance | Kotlin (0) | 2022.03.02 |
Lesson 6: App Architecture (Persistence) (0) | 2022.02.23 |
Lesson 5: App Architecture(UI Layer) (0) | 2022.02.22 |
κ³΅λΆ μ£Όμ (0) | 2022.02.19 |