κ°μ²΄, ν΄λμ€, λ©€λ²λ³μ, λ©μλ
π‘ κ°μ²΄ Object
: 물리μ μΌλ‘ μ‘΄μ¬νκ±°λ μΆμμ μΌλ‘ μκ°ν μ μλ κ² μ€μμ μμ μ μμ±μ κ°μ§κ³ μκ³ λ€λ₯Έκ²κ³Ό μλ³ κ°λ₯ν κ²
: "μμ¬λ νμκ° λ―ΈμΉλ λμ"
: ꡬ체μ , μΆμμ λ°μ΄ν° λ¨μ
π‘ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° OOP
: Object Oriented Programming
: κ°μ²΄λ₯Ό κΈ°λ°μΌλ‘ νλ νλ‘κ·Έλλ°
cf. μ μ°¨ νλ‘κ·Έλλ° (Procedural Programming), μ: CμΈμ΄ <- μκ°μ νλ¦
: κ°μ²΄ μ μ -> κ°μ²΄μ κΈ°λ₯ ꡬν -> κ°μ²΄ μ¬μ΄μ νλ ₯ ꡬν
π‘ ν΄λμ€ Class
: ν΄λμ€λͺ μ κ°λ¨μ΄μ 첫λ²μ§Έ λ¬Έμλ λλ¬Έμλ‘ μμ, 'λͺ μ¬'
: ν΄λμ€λͺ { } <- μ€κ΄νΈ{}λ‘ λλ¬μΈμΌνλ€
* ν΄λμ€λͺ == μμ€νμΌμ μ΄λ¦(ν΄λμ€λͺ .java)μ λμΌνκ² μ¬μ©ν΄μΌ νλ€
: κ°μ²΄μ λν μμ±κ³Ό κΈ°λ₯μ μ½λλ‘ κ΅¬ν ν κ²
: κ°μ²΄λ₯Ό μ μν΄λμ κ², κ°μ²΄ μμ±μ μ¬μ©
: ν΄λμ€ μμ± -> ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό μμ±νμ¬ μ¬μ© new
: μλ°μ λͺ¨λ μ½λλ class λ΄λΆμ μμΉ
: νλμ ν΄λμ€ λλκ²μ΄ μμΉ, μ¬λ¬κ°μ ν΄λμ€κ° μλκ²½μ° public ν΄λμ€λ λ¨ νλ.
: public ν΄λμ€μ μλ° νμΌμ μ΄λ¦ μΌμΉν΄μΌ νλ€
* κ°μ²΄μ μμ±, νΉμ± property, attribute == λ©€λ²λ³μ member variable
* κ°μ²΄μ κΈ°λ₯ == λ©μλ methodλ‘ κ΅¬ν
* λ¬Έμ₯μ λμλ νμ μΈλ―Έμ½λ‘ (;)
(μ κ·Ό μ μ΄μ) class ν΄λμ€μ΄λ¦{
λ©€λ² λ³μ;
λ©μλ;
}
* ν¨ν€μ§ : μμ€ μ½λλ₯Ό μ΄λ ν κ³μΈ΅ κ΅¬μ‘°λ‘ κ΄λ¦¬ν μ§ κ΅¬μ±νλ κ²
* ν΄λμ€μ μ μΈλ λ³μμΈ κ°μ²΄λ³μλ μΈμ€ν΄μ€ λ³μ, λ©€λ²λ³μ, μμ±μ΄λΌκ³ λ νλ€
* ν΄λμ€μ μν΄ μμ±λλ κ²μ "κ°μ²΄"
κ·Έ ν΄λμ€μ μ μΈλ λ³μλ "κ°μ²΄λ³μ" <- κ°μ²΄λ³μλ λ³μμ΄λ―λ‘ κ°μ λμ ν μ μλ€. κ°μ²΄.κ°μ²΄λ³μλͺ
* setName() λ©μλ : ν΄λμ€ λ΄μ ꡬνλ ν¨μ
* dog.setName("νΈν€") == dog.name("νΈν€") λ‘ κ° λμ κ°λ₯νλ€
* κ°μ²΄λ³μ == λ©€λ²λ³μμ κ°μ newλ‘ μμ±λ κ° κ°μ²΄λ§λ€ λ 립μ μΌλ‘ μ μ§λλ€
π‘ λ©μλ method == κΈ°λ₯
* λ°λ³΅λλ νλ -> ν λμΉλ‘ λ¬Άμ΄ "μ΄λ€ μ λ ₯κ°μ μ£Όμμ λ μ΄λ€ 리ν΄κ°μ λλ €μ€λ€"
: λ©μλλͺ μ 'λμ¬', μ²μ μμ λ¬Έμλ νμ μλ¬Έμ
: κ°μ²΄μ κΈ°λ₯μ μ 곡νκΈ° μν΄ ν΄λμ€ λ΄λΆμ ꡬνλ ν¨μ
* μλ°λ ν¨μμ λ©μλλ₯Ό ꡬλΆν΄μ λ§νμ§ μλλ€, ν΄λμ€λ΄μ μ‘΄μ¬νλ―λ‘ λ€ λ©μλμ΄λ€
: μ λ ₯μ κ°μ§κ³ μ΄λ€ μΌμ μνν λ€μ κ²°κ³Όλ¬Όμ λ΄μ΄λλ κ²
: λ©μλ λ΄μ μ¬μ©λλ λ³μλ λ©μλ λ°μ λ³μμ μκ΄μλ, λ©μλ μμμλ§ μ¬μ©λλ 'λ‘컬λ³μ'μ΄λ€
: λ©μλμ μ λ ₯κ°μ΄ κ°μ²΄μ΄κ³ , λ©μλκ° κ°μ²΄μ μμ±κ°μ λ³κ²½νλ€λ©΄,
λ©μλ μν μ΄νμλ κ°μ²΄λ λ³κ²½λ μμ±κ°μ μ μ§νλ€
* λ©μλμ κ°μ²΄λ₯Ό μ λ¬ν κ²½μ° λ©μλμμ κ°μ²΄μ κ°μ²΄λ³μ(μμ±) κ°μ λ³κ²½ν μ μλ€
리ν΄μλ£ν λ©μλλͺ
(μ
λ ₯μλ£ν1 맀κ°λ³μ1, μ
λ ₯μλ£ν2 맀κ°λ³μ2,...) {
μ€νλ¬Έ.....
return 리ν΄κ°; // 리ν΄μλ£νμ΄ voidμΈ κ²½μ°μλ returnλ¬Έ νμμλ€
}
리ν΄κ°λ°μλ³μ = κ°μ²΄.λ©μλλͺ
(μ
λ ₯μΈμ1, μ
λ ₯μΈμ2,...); // λ©μλ μ¬μ©
π this : μ΄μ©ν΄ κ°μ²΄μ μ κ·Όν μ μλ€
* λ©μλκ° κ°μ²΄λ₯Ό μ λ¬ λ°μΌλ©΄ λ©μλ λ΄μ κ°μ²΄λ μ λ¬λ°μ κ°μ²΄ κ·Έ μμ²΄λ‘ μνλλ€
public class Main {
int a; // κ°μ²΄λ³μ
void test() {
this.a++;
}
public static void main(String[] args) {
Main main = new Main();
main.a = 1;
main.test();
System.out.println(main.a); // 2
}
<return>
: λ©μλμ κ²°κ³Όκ° λλ €μ£Όλ λͺ λ Ήμ΄
: λ©μλμ 리ν΄κ°μ μ€λ‘μ§ returnλ¬Έμ μν΄μλ§ μμ±λλ€
* return κ°μ΄ μλ λ©μλ => 리ν΄νμ λΆλΆμ voidλΌκ³ νκΈ°
λ©μλ μμ±μ, 리ν΄μλ£ν/void λ μ€ νλλ λ°λμ μμ΄μΌνλ€.
π μ λ ₯κ°O, μΆλ ₯κ°O
int sum(int a, int b) {
return a+b;
}
* int c = κ°μ²΄λͺ .sum(3,4);
System.out.println(c); // 7
π μ λ ₯κ°X, μΆλ ₯κ°O
String say() {
return "Hi";
}
* String a = κ°μ²΄λͺ .say();
System.out.println(a); // Hi
π μ λ ₯κ°O, μΆλ ₯κ°X
void sum(int a, int b){
System.out.println("ν©μ " + (a+b) + "μ λλ€");
}
* κ°μ²΄λͺ .sum(3,4); // ν©μ 7μ λλ€
π μ λ ₯κ°X, μΆλ ₯κ°X
void say() {
System.out.println("Hi");
}
* κ°μ²΄λͺ .say(); // Hi
π νΉλ³ν κ²½μ° λ©μλλ₯Ό λΉ μ Έλκ°κΈ°λ₯Ό μν λ returnμ λ¨λ μΌλ‘ μ¬μ©νμ¬ λ©μλλ₯Ό μ¦μ λΉ μ Έλκ° μ μλ€
* 리ν΄μλ£νμ΄ voidμΈ λ©μλλ§ ν΄λΉ
* foolμ΄ λ€μ΄μ€λ©΄ λ¬Έμμ΄μ μΆλ ₯νμ§ μκ³ λ©μλλ₯Ό μ¦μ λΉ μ Έλκ°λ€ <- returnκ° void
* Sample ν΄λμ€μ sayNick λ©μλλ₯Ό νΈμΆ
-> Sample ν΄λμ€μ κ°μ²΄λ₯Ό μμ± Sample sample = new Sample();
-> μμ±λ κ°μ²΄λ₯Ό ν΅ν΄ sayNick λ©μλ νΈμΆ sample.sayNick("fool");
π 맀κ°λ³μ(parameter)μ μΈμ(arguments)
맀κ°λ³μ : λ©μλμ μ λ ₯μΌλ‘ μ λ¬λ κ°μ λ°λ λ³μ, λ©μλμ μ λ ₯κ°
μΈμ : λ©μλλ₯Ό νΈμΆν λ μ λ¬νλ μ λ ₯κ°
π‘ ν¨μ function
: νλμ κΈ°λ₯μ μννλ μΌλ ¨μ μ½λ
: μ€λ³΅λλ κΈ°λ₯ -> ν¨μλ‘ κ΅¬ν
: ν¨μλ₯Ό νΈμΆν΄μ μ¬μ©νλ€
public class FunctionEx {
public static int addNum(int n1, int n2) { // ν¨μ μ μΈ addNumμμ μ μΈλ λ³μ n1, n2
// addNum(num1, num2)κ°μ 볡μ¬ν΄μ λ°λ μν λ§ νλ€
int result = n1 + n2;
return result;
}
public static void main(String[] args) { // μ€μ μ€ν λΆλΆ
// mainμμ μ μΈλ λ³μ num1, num2
// n1, n2μ λ³κ°
int num1 = 10;
int num2 = 20;
int sum = addNum(num1, num2);
System.out.println(sum);
}
}
* public : λ©μλ μ κ·Όμ μ΄μ, ν΄λΉ λ©μλλ μ΄λ€ κ³³μμλ μ§ νΈμΆ κ°λ₯
* void : λ©μλ μ€ν ν 리ν΄λλ κ°μ μλ£ν
* static : addNum λ©μλλ staticμΌλ‘ μ μΈνμκΈ° λλ¬Έμ λ³λμ κ°μ²΄ μμ±μμ΄ λ©μλ νΈμΆλ§μΌλ‘ μ¬μ© κ°λ₯νλ€
: "ν΄λμ€λͺ .λ©μλλͺ " ννλ‘ νΈμΆ κ°λ₯