πToday...
μ°μ 무μμ΄ λκ³ μ νλκ°λ₯Ό μμ μκ² λ§νλΌ κ·Έλ¦¬κ³ ν΄μΌ ν μΌμ νλΌ - Epictetus
βμ€λμ TIL(Today I Learn)
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP; Object Oriented Programming) μ μΌλ ¨μ λͺ λ Ήμ΄λ€μ λμ΄νμ¬ λ§μ 건λ΄λ μ μ°¨μ μΈ νλ‘κ·Έλλ° λ°©μκ³Όλ λ€λ₯΄κ² νλ‘κ·Έλλ°μμ νμν λ°μ΄ν°λ₯Ό νκ³³μ λͺ¨μ μΆμνμμΌ μνμ νμλ₯Ό κ°μ§ κ°μ²΄λ₯Ό λ§λ€κ³ κ·Έ κ°μ²΄λ€κ°μ νλ ₯κ³Ό μ κΈ°μ μΈ μνΈμμ©μ ν΅ν΄ νΉμ κΈ°λ₯μ κ΅¬μ± νλ νλ‘κ·Έλλ° λ°©λ²λ‘ μ΄λ€.
http://wiki.hash.kr/index.php/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5
- ν΄λμ€(Class) : κ°μ²΄λ₯Ό μ μν ν, κ°μ²΄λ₯Ό μμ±νλλ° μ¬μ©λλ€.
- κ°μ²΄(Object) : μ€μ¬νλ λͺ¨λ κ², μ¬μ© ν μ μλ μ€μ²΄
- μΈμ€ν΄μ€(Instance) : ν΄λμ€λ₯Ό ν΅ν΄ μμ±λ κ°μ²΄, κ°μ²΄λ₯Ό λ§λλ κ³Όμ μ μΈμ€ν΄μ€ν λΌκ³ νλ€.
μΈμ€ν΄μ€ ⊂ κ°μ²΄
ν΄λμ€μ κ°μ²΄
# Class
ν΄λμ€λ κΈ°λ³Έμ μΌλ‘ λλ¬Έμλ‘ μμνλ€.
- νλ(field) - ν΄λμ€μ μμ±μ λνλ΄λ λ³μ
- λ©μλ(method) : ν΄λμ€μ κΈ°λ₯μ λνλ΄λ ν¨μ
- μμ±μ(constructor) : ν΄λμ€μ κ°μ²΄λ₯Ό μμ±νλ μν
- μ΄λ ν΄λμ€(inner class) : ν΄λμ€ λ΄λΆμ ν΄λμ€
μμ ꡬμ±μμλ€μ€ μμ±μλ₯Ό μ μΈν μμλ₯Ό Classμ memberλΌκ³ νλ€. μ΄μ€ νλμ λ©μλλ κ°κ° μμ±, κΈ°λ₯μ λννλ€.
# κ°μ²΄(Object)
κ°μ²΄λ μμ±κ³Ό κΈ°λ₯μ΄λΌλ ꡬμ±μμλ‘ μ΄λ£¨μ΄μ§λ€.
μμ± - νλ
κΈ°λ₯ - λ©μλ
μμ ꡬμ±μμλ€κ³Ό μ΄λν΄λμ€λ₯Ό κ°μ²΄μ memberλΌκ³ λΆλ₯Έλ€.
κ°μ²΄μ μμ±λ°©λ²μ newν€μλλ₯Ό ν΅ν΄ μ€μ κ°μ²΄λ₯Ό μμ±ν μ μλ€. κ·Έλ¦¬κ³ pointμ°μ°μ( . )μ ν΅ν΄ ν΄λΉ κ°μ²΄μ λ©€λ²μ μ κ·Όμ΄ κ°λ₯νλ€.
<ν΄λμ€λͺ
> <μ°Έμ‘°λ³μλͺ
> = new <μμ±μ>();
Person ps = new Person();
μ°Έκ³ μλ£
http://wiki.hash.kr/index.php/%ED%81%B4%EB%9E%98%EC%8A%A4
http://wiki.hash.kr/index.php/%EA%B0%9D%EC%B2%B4
https://www.youtube.com/watch?v=Mm06BuD3PlY
νλμ λ©μλ
# νλ
νλλ ν΄λμ€μ ν¬ν¨λ λ³μλ₯Ό μλ―Έ , κ°μ²΄μ μμ±μ μ μν λ μ¬μ©
class Example { // => ν΄λμ€ μμ
int instanceVariable; // μΈμ€ν΄μ€ λ³μ
static int classVariable; // ν΄λμ€ λ³μ(static λ³μ, 곡μ λ³μ)
void method() { // => λ©μλ μμ
int localVariable = 0; // μ§μ λ³μ. {}λΈλ‘ μμμλ§ μ ν¨
}
}
μ¬κΈ°μ μΈμ€ν΄μ€λ³μ, ν΄λμ€λ³μλ ν΄λμ€ μμμ μ μΈλμκΈ° λλ¬Έμ λ©€λ²λ³μ(νλ) μ΄λ€.
κ·Έλ¦¬κ³ λ©€λ²λ³μμ λ€λ₯΄κ² μ§μλ³μλ λ©μλ λ΄λΆμ λΈλ‘μμλ§ μ¬μ©μ΄ κ°λ₯νλ€. μ§μλ³μλ μ€νλ©λͺ¨λ¦¬μ μ μ₯μ΄ λμλ€κ° λ©μλκ° μ’ λ£λ¨κ³Ό ν¨κ» μλ©Ένλ€.
κ·Έλ¦¬κ³ νλλ³μμ μ§μλ³μμ μ°¨μ΄λ μ΄κΈ°κ°μ μλλ° νλλ³μλ κ°μ λ‘ μ΄κΈ°νκ° μ΄λ£¨μ΄μ§λ€. μ¦, μ§μλ³μλ μ μΈμμ λ°λμ μ΄κΈ°νκ° νμνλ€.
http://wiki.hash.kr/index.php/%ED%95%84%EB%93%9C_(%EC%9E%90%EB%B0%94)
# Static
static ν€μλλ₯Ό μ¬μ©ν λ³μλ₯Ό 'static member' λΌκ³ λΆλ₯΄κ³ μΈμ€ν΄μ€ λ©€λ²μ ꡬλΆλλ€.
static ν€μλλ₯Ό μ¬μ©ν λ³μ/λ©μλλ μΈμ€ν΄μ€μ μμ± μμ΄ νΈμΆμ΄ κ°λ₯νλ€.
μ μ νλλ κ°μ²΄κ°μ 곡μ λ³μμ μ±μ§μ΄λ€. (λ©μλλ λμΌνκ² μ μ©)
μ μ λ©μλμ κ²½μ° μΈμ€ν΄μ€λ³μ λλ μΈμ€ν΄μ€ λ©μλλ₯Ό μ¬μ©ν μκ° μλ€.
ν΄λμ€ λ³μ(Static λ©€λ²)
- ν΄λμ€ λ΄μ Static ν€μλλ‘ μ μΈλ λ³μ
- μ²μ JVMμ΄ μ€νλμ΄ ν΄λμ€κ° λ©λͺ¨λ¦¬μ μ¬λΌκ° λ ~ νλ‘κ·Έλ¨μ΄ μ’ λ£λ λκΉμ§ μ μ§
- ν΄λμ€κ° μ¬λ¬ λ² μμ±λμ΄λ Static λ³μλ μ²μ λ± ν λ²λ§ μμ±λ¨
- λμΌν ν΄λμ€μ λͺ¨λ κ°μ²΄λ€μ μν΄μ 곡μ λ¨
μΈμ€ν΄μ€ λ³μ(Non-static λ©€λ²)
- ν΄λμ€ λ΄μ μ μΈλ λ³μ
- κ°μ²΄ μμ± μλ§λ€ λ§€λ² μλ‘μ΄ λ³μκ° μμ±λ¨
- ν΄λμ€ λ³μμ λ¬λ¦¬ 곡μ λμ§ μμ
# λ©μλ(method)
λ©μλλ "νΉμ ν μμ μ μννλ μΌλ ¨μ λͺ λ Ήλ¬Έλ€μ μ§ν©" μ΄λ€. ν΄λμ€μμ κΈ°λ₯μ ν΄λΉνλ λ΄μ©μ λ΄λΉνλ€.
λ©μλλ λ©μλ μκ·Έλμ²(method signature), λ©μλ λ°λ(method body)λ‘ κ΅¬λΆλλ€.
public static int add(int x, int y) { // λ©μλ μκ·Έλμ²
int result = x + y; // λ©μλ λ°λ
return result;
}
methodμ λ°ννμ μ΄ voidκ° μλκ²½μ°μλ λ©μλ λ°λμ λ°λμ returnλ¬Έμ΄ μ‘΄μ¬ν΄μΌνκ³ , κ²°κ³Όκ°μ λ°ννμ κ³Ό μΌμΉνκ±°λ μλνλ³νμ ν΅ν΄μλΌλ μΌμΉν΄μΌνλ€.
http://wiki.hash.kr/index.php/%EB%A9%94%EC%86%8C%EB%93%9C
# λ©μλ μ€λ²λ‘λ©(Overloading)
λ©μλ μ€λ²λ‘λ©μ νλμ ν΄λμ€ μμ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬λ¬κ° μ μνλ κ²μ μλ―Ένλ€.
public class Overloading {
public static void main(String[] args) {
Shape s = new Shape(); // κ°μ²΄ μμ±
s.area(); // λ©μλ νΈμΆ
s.area(1);
s.area(1,1);
s.area(1.1, 1.1);
}
}
class Shape {
public void area() { // λ©μλ μ€λ²λ‘λ©. κ°μ μ΄λ¦μ λ©μλ 4κ°.
System.out.println("μΈμ μμ");
}
public void area(int r) {
System.out.println("int μΈμ νλ");
}
public void area(int w, int l) {
System.out.println("int ν μΈμ λ");
}
public void area(double b, double h) {
System.out.println("double ν μΈμ λ");
}
}
//κ²°κ³Ό
//μΈμ μμ
//int μΈμ νλ
//int ν μΈμ λ
//double ν μΈμ λ
쑰건
- λ©μλμ μ΄λ¦μ΄ κ°μμΌνλ€.
- λ©κ°λ³μμ κ°μ λλ νμ μ΄ λ¬λΌμΌ νλ€.
- λ°ννμ μ μ€λ²λ‘λ©μ΄ μ±λ¦½μ μν₯μ μ£Όμ§ λͺ»νλ€.
πνΌμμ ν΄κ²°νκΈ°
1. Parameter vs Argument
parameterλ ν¨μ νΉμ λ©μλ μ μμμ λμ΄λλ λ³μ λͺ (λ§€κ°λ³μ), λ©μλμ μ λ ₯λλ λ³μλͺ
argumentλ ν¨μ νΉμ λ©μλλ₯Ό νΈμΆν λ μ λ¬ νΉμ μ λ ₯λλ μ€μ κ°μ΄λ€.(μ λ¬μΈμ) ν¨μμ λ©μλμ μ λ ₯κ°