κ°μ²΄
νλ‘κ·Έλ¨μ λμ μ£Όμ²΄κ° λλ μμ, λͺ¨λ κ°μ²΄λ μνμ λμμ κ°μ§
κ°μ²΄ μ§ν₯
κ°μ²΄λ₯Ό ν΅ν΄ μ½λλ₯Ό ꡬμ±νλ λ°©λ²λ‘ , κ°μ²΄μ μνΈμμ©μ μ½λλ‘ λνλ
ν΄λμ€ = νλ(field) + λ©μλ(method) κ°μ²΄ μ€κ³λ = κ°μ²΄ μμ±(λ³μ) + κ°μ²΄ νλ(λͺ λ Ήλ¬Έ) (λͺ λ Ήλ¬Έ)
- μΈμ€ν΄μ€ : ν΄λΉ ν΄λμ€ νμ μ κ°μ²΄ (μ¬λ¬κ° μμ± κ°λ₯)
νλ
ν΄λμ€ λ³μμ μΈμ€ν΄μ€ λ³μλ λ³λλ‘ μ΄κΈ°ννμ§ μμΌλ©΄ μλ μ΄κΈ°νλλ©°, μ§μλ³μλ λ³λλ‘ μ΄κΈ°ν ν΄μ€μΌ ν¨
| λ³μ | μ μ₯ λ©λͺ¨λ¦¬ | μ¬μ© λ°©λ² |
|---|---|---|
| ν΄λμ€ λ³μ(static variable) | λ©μλ μμ | ν΄λμ€μ΄λ¦.λ³μμ΄λ¦ |
| μΈμ€ν΄μ€ λ³μ(instance variable) | ν μμ | μΈμ€ν΄μ€μ΄λ¦.λ³μμ΄λ¦ |
| μ§μλ³μ(local variable) | μ€ν μμ | λ³μμ΄λ¦ |
λ©μλ
μ€λ³΅λλ μ½λμ λ°λ³΅μ μΈ νλ‘κ·Έλλ°μ νΌνκΈ° μν΄ μ¬μ© νλμ λ©μλκ° νλμ κΈ°λ₯λ§μ μννλλ‘ μμ±νλ κ²μ΄ κΈ°λ³Έμ
- ν΄λμ€ λ©μλ(static method)
- μΈμ€ν΄μ€ λ©μλ(instance method)
κ°μ²΄μ°Έμ‘°λ³μμ΄λ¦.λ©μλμ΄λ¦();
// λ§€κ°λ³μκ° μλ λ©μλμ νΈμΆ
κ°μ²΄μ°Έμ‘°λ³μμ΄λ¦.λ©μλμ΄λ¦(μΈμ1, μΈμ2, ...);
// λ§€κ°λ³μκ° μλ λ©μλμ νΈμΆ
- λ©μλ μ€λ²λ‘λ©
μμ±μ
μμ±λ κ°μ²΄μ νλλ₯Ό μ΄κΈ°νν΄μ£Όλ λ©μλ
- μμ±μλ₯Ό μ μνμ§ μμλ μλ° μ»΄νμΌλ¬κ° κΈ°λ³Έ μμ±μλ₯Ό μ 곡ν¨
- μμ±μλ λ°νκ°μ΄ μμ§λ§, λ°ν νμ μ voidνμΌλ‘ μ μΈνμ§ μλλ€.
- μμ±μλ μ΄κΈ°νλ₯Ό μν λ°μ΄ν°λ₯Ό μΈμλ‘ μ λ¬λ°μ μ μλ€.
- κ°μ²΄λ₯Ό μ΄κΈ°ννλ λ°©λ²μ΄ μ¬λ¬ κ° μ‘΄μ¬ν κ²½μ°μλ νλμ ν΄λμ€κ° μ¬λ¬ κ°μ μμ±μλ₯Ό κ°μ§ μ μλ€. (μ¦, μμ±μλ νλμ λ©μλμ΄λ―λ‘, λ©μλ μ€λ²λ‘λ© κ°λ₯)
class Car {
//μμ±μ μ μΈ
Car(String modelName, int modelYear, String color, int maxSpeeds) {
this.modelName = modelName;
this.modelYear = modelYear;
this.color = color;
this.maxSpeed = maxSpeed;
this.currentSpeed = 0;
}
Car() {
this("μλν", 2012, "κ²μ μ", 160); // λ€λ₯Έ μμ±μλ₯Ό νΈμΆν¨.
//λ°λμ ν΄λΉ μμ±μμ 첫 μ€μμλ§ νΈμΆ κ°λ₯
}
public String getModel() {
return this.modelYear + "λ
μ " + this.modelName + " " + this.color;
}
-
this μ°Έμ‘°λ³μ: μμ±μμ λ§€κ°λ³μ μ΄λ¦κ³Ό μΈμ€ν΄μ€ λ³μμ μ΄λ¦μ΄ κ°μ κ²½μ°μλ μΈμ€ν΄μ€ λ³μ μμ thisν€μλλ₯Ό λΆμ¬ ꡬλΆν΄μΌ ν¨ -
this() λ©μλ: μμ±μ λ΄λΆμμλ§ μ¬μ©ν μ μμΌλ©°, κ°μ ν΄λμ€μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©ν¨
public class Method05 {
public static void main(String[] args) {
Car tcpCar = new Car();
System.out.println(tcpCar.getModel())
//2012λ
μ μλν κ²μ μ
Car myCar = new Car("μλ°λΌ", 2016, "ν°μ", 200);
System.out.println(myCar .getModel())
//2016λ
μ μλ°λΌ ν°μ
}
}
κ°μ²΄ μ§ν₯μ μ₯μ κ³Ό λ¨μ
π μ½λ μ¬μ¬μ©μ± π κ°νΈν μ μ§λ³΄μ(μ°κ΄ κ°μ²΄λ§ μμ ) π μ 무 λΆμ₯ λ° λμνκ° μ©μ΄ν΄ ν° κ·λͺ¨ νλ‘κ·Έλλ°μ μ 리 π κ° κ°μ²΄μ μμ‘΄κ΄κ³ 볡μ‘λμ μν΄ λΉκ΅μ λλ¦° μλ π λμ μ€κ³ μλ μꡬ
-
λ©μλ μ€λ²λ‘λ©κ³Ό μ€λ²λΌμ΄λ©
λ©μλ μ€λ²λ‘λ©μ μλ‘ λ€λ₯Έ μκ·Έλμ²λ₯Ό κ°λ μ¬λ¬ λ©μλλ₯Ό νλμ μ΄λ¦μΌλ‘ μ μνλ κ²μΈ ννΈ λ©μλ μ€λ²λΌμ΄λ©μ μμ κ΄κ³μ μλ λΆλͺ¨ ν΄λμ€μμ μ΄λ―Έ μ μλ λ©μλλ₯Ό μμ ν΄λμ€μμ κ°μ μκ·Έλμ³λ₯Ό κ°λ λ©μλλ‘ λ€μ μ μνλ κ²μ μλ―Έ
κ°μ²΄ μ§ν₯ μ€κ³ μμΉ
Single Responsibility Principle
λ¨μΌ μ± μ μμΉ
νλμ ν΄λμ€λ νλμ μν λ§ ν΄μΌ νλ€.
Open - Close Principle
κ°λ°©-νμ μμΉ
νμ₯ (μμ)μλ μ΄λ €μκ³ , μμ μλ λ«ν μμ΄μΌ νλ€.
Liskov Substitution Principle
리μ€μ½ν μΉν μμΉ
μμμ΄ λΆλͺ¨μ μ리μ νμ κ΅μ²΄λ μ μμ΄μΌ νλ€.
Interface Segregation Principle
μΈν°νμ΄μ€ λΆλ¦¬ μμΉ
κ°μ²΄λ μμ μ΄ νΈμΆνμ§ μλ λ©μλμ μμ‘΄νμ§ μμμΌ νλ€.
Dependency Inversion Property
μμ‘΄μ± μμ μμΉ
μμ λͺ¨λμ΄ νμ λͺ¨λμ μμ‘΄νμ§ μμμΌ νλ€.
μΆμν
κ°μ²΄μ 곡ν΅μ μΈ μμ±κ³Ό κΈ°λ₯μ μΆμΆνμ¬ μ μ νλκ² β μν κ³Ό ꡬνμ λΆλ¦¬

μΆμν΄λμ€μ μΈν°νμ΄μ€μ μ°¨μ΄
extends
- μΆμ ν΄λμ€λ νλ μ΄μμ μΆμ λ©μλλ₯Ό ν¬ν¨ν ν΄λμ€λ₯Ό μλ―Ένλ©°, μμ±μ λ° μΌλ° λ©μλλ ν¬ν¨ν μ μλ€.
- μΆμ ν΄λμ€λ λ¨μΌ μμλ§ νμ©λλ€.
implements
- μΈν°νμ΄μ€λ μΆμ λ©μλμ μμλ§μ ν¬ν¨νλ€.
- μΈν°νμ΄μ€λ ν΄λμ€μ λ€μ€ ꡬν λ° μΈν°νμ΄μ€ λΌλ¦¬ λ€μ€ μμμ΄ κ°λ₯νλ€.
- μΆμ λ©μλλ ν¨μ μ μΈλ§ λμ΄μκ³ κ΅¬νλΆκ° μλ λ©μλλ₯Ό μλ―Ένλ€.
λ€νμ±
μ΄λ€ κ°μ²΄μ μμ±μ΄λ κΈ°λ₯μ΄ κ·Έ λ§₯λ½μ λ°λΌ λ€λ₯Έ μν μ μνν μ μλ κ°μ²΄ μ§ν₯μ νΉμ±μ μλ―Έ
β ν νμ μ μ°Έμ‘°λ³μλ₯Ό ν΅ν΄ μ¬λ¬ νμ μ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλλ‘ λ§λ κ²
-
λνμ μΈ μμλ‘ λ©μλ μ€λ²λ‘λ©κ³Ό μ€λ²λΌμ΄λ©μ΄ ν΄λΉ
- μ€λ²λΌμ΄λ© : κ°μ μ΄λ¦μ λ©μλκ°Β μν©μ λ°λΌ λ€λ₯Έ μν μ μννλ κ²
- μ€λ²λ‘λ© : νλμ ν΄λμ€ λ΄μμ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬λ¬ κ° μ€λ³΅νμ¬ μ μνλ κ²
### ꡬν μμ
β κ° ν΄λμ€μ μ§μ μ κ·Όνμ§ λͺ»νλλ‘ μΈν°νμ΄μ€λ‘ κ°μΈμ£Όμ΄, μ½λμ μ€λ³΅μ±μ΄ μ¬λΌμ§κ³ μΈλΆλ‘λΆν° λ°μ΄ν° 보νΈκ° κ°λ₯ν΄μ§
μμ
κΈ°μ‘΄μ ν΄λμ€λ₯Ό μ¬νμ©νμ¬ μλ‘μ΄ ν΄λμ€λ₯Ό μμ±νλ μλ°μ λ¬Έλ² μμλ₯Ό μλ―Έ
- μμ ν΄λμ€λ‘λΆν° νμ₯λ μ¬λ¬ κ°μ νμ ν΄λμ€λ€μ΄ λͺ¨λ μμ ν΄λμ€μ μμ±κ³Ό κΈ°λ₯λ€μ κ°νΈνκ² μ¬μ©ν μ μμ
- λͺ¨λ ꡬ체μ μΈ λ΄μ©λ€μ μμ ν΄λμ€μ μ μν΄λκ³ νμ ν΄λμ€μμλ κ·Έκ²μ λ¨μν κ°μ Έλ€κ° μ¬μ¬μ©ν μ μμ
