-
[Java] ch5 μλ° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° OOP (ν΄λμ€, λ©μλ, μλ° λ³μ)
2023. 9. 5.
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming, OOP)
- μ μ°¨μ§ν₯ ↔ κ°μ²΄μ§ν₯
- κ°μ²΄(object)λ₯Ό μμ±νκ³ κ°μ²΄λ€κ°μ μνΈμμ©μ ν΅ν΄ λ‘μ§μ ꡬμ±νλ νλ‘κ·Έλλ°
- ν΄λμ€λ₯Ό μ΄μ©ν΄ ν¨μ λ° λ³μλ₯Ό νλλ‘ λ¬Άμ΄ κ°μ²΄λ₯Ό μμ± → νλ‘κ·Έλ¨μ μμ , μ μ§λ³΄μμ μ 리, μ½λμ μ¬μ¬μ©
- μΆμν(κ°μ²΄μ 곡ν΅μ μΈ μμ± μΆμΆ), μμ(κΈ°μ‘΄μ ν΄λμ€ νμ©νμ¬ μλ‘μ΄ ν΄λμ€ μμ±), λ€νμ±(κ°μ²΄μ μμ±μ΄ μ¬λ¬κ°μ§ νν), μΊ‘μν(ν΄λμ€μ μ μλ μμ±κ³Ό κΈ°λ₯ 보νΈ, νμν λΆλΆλ§ λ ΈμΆ)
- Javaμ νλ‘κ·Έλλ° λ°©μμ΄ μ΄μ ν΄λΉ
01 ν΄λμ€
class Animal { String name; public void setName(String name){ this.name=name; } public class Sample { public static void main(String[] args) { Animal cat = new Animal(); //ν΄λμ€ Animalμ instance(κ°μ²΄)μΈ cat μμ± } }
- ν΄λμ€= λ°μ΄ν°(λ³μ)+ ν¨μ
- .java νμΌλͺ κ³Ό κ°μ κ²½μ° public classλ₯Ό λΆμ¬μΌ ν¨
- new → κ°μ²΄λ₯Ό μμ±νλ ν€μλ. μλ‘μ΄ κ°μ²΄λ₯Ό μν λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ κ·Έ λ©λͺ¨λ¦¬μ λν μ°Έμ‘°λ₯Ό λ°ννλ μ°μ°μ
- μμ±μ → μΈμ€ν΄μ€λ₯Ό μ΄κΈ°νν λ μ¬μ©. ν΄λμ€μ μ΄λ¦μ΄ κ°μμΌ ν¨. λ°λ‘ μ€μ νμ§ μμΌλ©΄ κΈ°λ³Έ μμ±μκ° μμ±(맀κ°λ³μx)
ν΄λμ€μ μ μΈ → νλ, μμ±μ, λ©μλ μ μ
- νλ: μΈμ€ν΄μ€μ μμ±μ λνλ΄κ±°λ ν΄λμ€μ μμ±μ λνλ
- μμ±μ: μλ‘μ΄ κ°μ²΄λ₯Ό μμ±
- λ©μλ: ν¨μ ꡬν
κ°μ²΄ λ³μλ?
- κ°μ²΄ = μμ±(λ³μ) + κΈ°λ₯(λ©μλ)
- κ°μ²΄ λ³μ(instance variable) = μμ± = λ©€λ² λ³μ = μΈμ€ν΄μ€ λ³μ : ν΄λμ€ λ΄μ μ μΈλ λ³μ
- κ°μ²΄μ΄λ¦.κ°μ²΄λ³μμ΄λ¦ ννλ‘ μ κ·Ό
- κ°μ²΄ κ° κ³΅μ λμ§ μλλ€ (κ° κ°μ²΄μμ λ 립μ μΌλ‘ μ μ§)
λ©μλλ?
class Animal { String name; public void setName(String name) { this.name = name; } }
- ν΄λμ€ λ΄μ ꡬνλ ν¨μ (μ μμμμμ setName)
- κ°μ²΄.λ©μλ ννλ‘ νΈμΆ
this ν€μλμ νμ©
- μΈμ€ν΄μ€ μκΈ° μμ μ κ°λ¦¬ν€λ ν€μλ. ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ μμ±λ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μ°Έμ‘°
- λ©μλ λ΄μμλ§ μ¬μ©λλ©°, κ°μ²΄ μμ μ λ©μλμ μ λ¬νκ±°λ 리ν΄νκΈ° μν΄ μ¬μ©
- this.λ©€λ²λ³μ : λ§€κ° λ³μμ κ°μ²΄ μμ μ΄ κ°μ§κ³ μλ λ³μμ μ΄λ¦μ΄ κ°μ κ²½μ° μ΄λ₯Ό ꡬλΆνκΈ° μν΄ μμ μ λ³μμ thisλ₯Ό μ¬μ©
- this(맀κ°λ³μ) : μμ±μ λ΄μμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆ
sample.varTest(sample); κ³Ό κ°μ΄ λ©μλ νΈμΆ μ κ°μ²΄λ₯Ό μ λ¬νλ λ°©μκ³Ό λ¬λ¦¬
public class Sample { int a; // κ°μ²΄λ³μ a void varTest() { this.a++; } public static void main(String[] args) { Sample sample = new Sample(); sample.a = 1; sample.varTest(); System.out.println(sample.a); }
κ°μ²΄λ₯Ό μ λ¬νμ§ μκ³ λ thisν€μλλ₯Ό μ΄μ©ν΄μ κ°μ²΄μ μ κ·Ό κ°λ₯
02 λ©μλ
- λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄μ λ¬λ¦¬ μλ°λ ν¨μκ° λ°λ‘ μ‘΄μ¬x ν΄λμ€ λ΄μ μ‘΄μ¬ → λ©μλ(method)
- λ©μλμ μ λ ₯κ°μΌλ‘ κ°μ²΄λ₯Ό μ λ¬ν μλ μμ → λ©μλ λ΄μ κ°μ²΄λ μ λ¬λ°μ κ°μ²΄ κ·Έ μμ²΄λ‘ μν
- λ©μλμ μ λ ₯ νλͺ©μ΄ μμ μλ£ν, wrapper ν΄λμ€, stringμΈ κ²½μ° κ°μ΄ μ λ¬λκ³ κ·Έ μ΄μΈμ κ²½μ°λ κ°μ²΄κ° μ λ¬
기본 ꡬ쑰
리ν΄μλ£ν λ©μλλͺ (μ λ ₯μλ£ν1 맀κ°λ³μ1, μ λ ₯μλ£ν2 맀κ°λ³μ2, ...) { ... **return** 리ν΄κ°; // 리ν΄μλ£νμ΄ void μΈ κ²½μ°μλ return λ¬Έμ΄ νμμλ€. }
- λ¦¬ν΄ μλ£ν : λ©μλ μν ν 리ν΄λλ κ°μ μλ£ν
맀κ°λ³μμ μΈμ
public class Sample { int sum(int a, int b) { // a, b λ 맀κ°λ³μ return a+b; } public static void main(String[] args) { Sample sample = new Sample(); int c = sample.sum(3, 4); // 3, 4λ μΈμ System.out.println(c); } }
- 맀κ°λ³μ : λ©μλμ μ λ¬λ μ λ ₯κ°μ μ μ₯νλ λ³μ
- μΈμ : λ©μλλ₯Ό νΈμΆν λ μ λ¬νλ μ λ ₯κ°
returnμ λ λ€λ₯Έ μ°μ
public class Sample { void sayNick(String nick) { if ("λ°λ³΄".equals(nick)) { return; } System.out.println("λμ λ³λͺ μ "+nick+" μ λλ€."); } public static void main(String[] args) { Sample sample = new Sample(); sample.sayNick("μΌνΈ"); sample.sayNick("λ°λ³΄"); // μΆλ ₯λμ§ μλλ€. } }
- λ©μλλ₯Ό λΉ μ Έλκ°κ³ μΆμ λ returnμ λ¨λ μΌλ‘ μ¬μ©
- λ¦¬ν΄ μλ£νμ΄ voidμΈ λ©μλλ§ κ°λ₯
μλ° λ³μ
class Variables{ int first; // μΈμ€ν΄μ€ λ³μ static int second; // ν΄λμ€ λ³μ void hello(){ int third; // μ§μ λ³μ } }
λ³μμ μ’ λ₯ μ μΈ μμΉ μμ± μκΈ°
ν΄λμ€ λ³μ(static λ³μ, 곡μ λ³μ) ν΄λμ€ μμ ν΄λμ€κ° λ©λͺ¨λ¦¬μ μ¬λΌκ° λ μΈμ€ν΄μ€ λ³μ ν΄λμ€ μμ μΈμ€ν΄μ€κ° μμ±λμμ λ μ§μ λ³μ ν΄λμ€ μμ μ΄μΈμ μμ(λ©μλ, μμ±μ, μ΄κΈ°ν λΈλ‘ λ΄λΆ) λ³μ μ μΈλ¬Έμ΄ μνλμμ λ κ°μ μν νΈμΆκ³Ό κ°μ²΄μ μν νΈμΆ
class Updater { void update(int count) { count++; } } class Counter { int count = 0; // κ°μ²΄λ³μ } public class Sample { public static void main(String[] args) { Counter myCounter = new Counter(); System.out.println("before update:"+myCounter.count); Updater myUpdater = new Updater(); myUpdater.update(myCounter.count); System.out.println("after update:"+myCounter.count); } }
- λ©μλμ μ λ ₯ νλͺ©μ΄ μμ μλ£ν, wrapper ν΄λμ€, stringμΈ κ²½μ° κ°μ΄ μ λ¬λκ³ κ·Έ μ΄μΈμ κ²½μ°λ κ°μ²΄κ° μ λ¬
- μ μμ μΆλ ₯μ update μ κ³Ό ν λͺ¨λ 0μ΄ μΆλ ₯ (update λ©μλκ° κ°μ μ λ¬λ°μκΈ° λλ¬Έ)
- λ©μλμ μ λ ₯μΌλ‘ κ°μ²΄λ₯Ό μ λ¬νλ©΄ κ°μ²΄ λ³μμ κ° λ³κ²½ κ°λ₯ (λ©μλ μν νμλ κ°μ²΄μ λ³κ²½λ κ° μ μ§)
'π Study > : Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] ch5 μλ° μΈν°νμ΄μ€ (0) 2023.09.08 [Java] ch5 μλ° μμ (λ©μλ μ€λ²λ‘λ© vs λ©μλ μ€λ²λΌμ΄λ©) / μμ±μ (0) 2023.09.05 [Java] ch4 μ μ΄λ¬Έ (0) 2023.08.31 [Java] ch3 μλ°μ μλ£ν (Data type) μ 리 (1) 2023.08.13 [Java] JVM λμλ°©μ & ꡬμ±μμ (0) 2023.08.09 λκΈ