λͺ©μ°¨
νλ‘κ·Έλλ° ν¨λ¬λ€μμλ μ¬λ¬ κ°μ§κ° μμ§λ§, κ·Έμ€μμλ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming, OOP)μ νλ νλ‘κ·Έλλ°μ ν΅μ¬μ λλ€.
Javaλ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μ λλ€.
μ¦, μ°λ¦¬κ° νμ€ μΈκ³μ μ¬λ¬Όμ κ°μ²΄λ‘ λ³΄κ³ , μ΄λ₯Ό μ½λλ‘ λͺ¨λΈλ§νμ¬ νλ‘κ·Έλ¨μ ꡬμ±νλ λ°©μμ΄μ£ .
μ΄λ² ν¬μ€ν μμλ κ°μ²΄μ§ν₯μ μμμ μΈ ν΄λμ€μ κ°μ²΄, μμ±μμ this ν€μλ, μΊ‘μνμ μ κ·Ό μ μ΄μκΉμ§ OOPμ κΈ°λ³Έ ꡬ쑰λ₯Ό μ λ¦¬ν΄ λ³Όκ²μ!
π¦ ν΄λμ€μ κ°μ²΄
ν΄λμ€(Class)λ?
ν΄λμ€λ κ°μ²΄λ₯Ό λ§λ€κΈ° μν μ€κ³λ λλ ν νλ¦Ώμ λλ€. κ°μ²΄κ° κ°μ ΈμΌ ν μμ±(νλ)κ³Ό κΈ°λ₯(λ©μλ)μ μ μν΄ λμ νμ΄λΌκ³ μκ°νλ©΄ λΌμ.
public class Car {
String color;
int speed;
void drive() {
System.out.println("μ°¨κ° λ¬λ¦½λλ€.");
}
}
κ°μ²΄(Object)λ?
κ°μ²΄λ ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ μμ±λ μ€μ μΈμ€ν΄μ€μ λλ€. ν΄λμ€κ° μλμ°¨ μ€κ³λλΌλ©΄, κ°μ²΄λ μ€μ λλ‘ μλ₯Ό λ¬λ¦¬λ μλμ°¨μ λλ€.
ν΄λμ€λ₯Ό new ν€μλλ‘ μμ±νλ©΄ κ·Έκ²μ΄ κ°μ²΄μ λλ€.
Car myCar = new Car(); // κ°μ²΄ μμ±
myCar.color = "λΉ¨κ°"; // μμ± μ€μ
myCar.drive(); // λ©μλ νΈμΆ
π‘ νλμ ν΄λμ€(μ€κ³λ)λ‘ μ¬λ¬ κ°μ κ°μ²΄(μ ν)λ₯Ό λ§λ€ μ μμ΄μ!
μΈμ€ν΄μ€(Instance)λ?
μΈμ€ν΄μ€λ ν΄λμ€λ₯Ό ν΅ν΄ μμ±λ κ°μ²΄λ₯Ό μ§μΉνλ λ λ€λ₯Έ μ©μ΄μ λλ€.
"myCarλ Car ν΄λμ€μ μΈμ€ν΄μ€μ λλ€"λΌκ³ ννν μ μμ΅λλ€.
Car car1 = new Car(); // car1μ Car ν΄λμ€μ μΈμ€ν΄μ€
Car car2 = new Car(); // car2λ Car ν΄λμ€μ μΈμ€ν΄μ€
λ κ°μ²΄λ κ°μ ν΄λμ€μμ μμ±λμμ§λ§, λ©λͺ¨λ¦¬μ λ³λλ‘ μ‘΄μ¬νλ λ€λ₯Έ κ°μ²΄μ λλ€.
π οΈ μμ±μμ this ν€μλ
μμ±μ(Constructor)λ?
μμ±μλ κ°μ²΄κ° μμ±λ λ μλμΌλ‘ νΈμΆλλ νΉλ³ν λ©μλμ λλ€. κ°μ²΄μ μ΄κΈ° μνλ₯Ό μ€μ ν λ μ¬μ©λΌμ.
public class User {
String name;
int age;
// μμ±μ
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
User user = new User("νλΉ", 25); // μμ±μ νΈμΆ
μμ±μμ νΉμ§:
- ν΄λμ€ μ΄λ¦κ³Ό λμΌ
- λ°ν νμ μ΄ μμ (voidλ μ°μ§ μμ)
- κ°μ²΄ μμ± μ new ν€μλμ ν¨κ» νΈμΆλ¨
π μμ±μλ₯Ό μ μνμ§ μμΌλ©΄ μ»΄νμΌλ¬κ° μλμΌλ‘ κΈ°λ³Έ μμ±μλ₯Ό μΆκ°ν©λλ€.
νμ§λ§ νλλΌλ μμ±μλ₯Ό μ§μ μ μνλ©΄, κΈ°λ³Έ μμ±μλ μλμΌλ‘ μΆκ°λμ§ μμ΅λλ€.
this ν€μλ
thisλ νμ¬ κ°μ²΄ μμ μ κ°λ¦¬ν€λ μ°Έμ‘° λ³μμ λλ€.
μμ±μλ λ©μλμμ λ§€κ°λ³μμ λ©€λ²λ³μ μ΄λ¦μ΄ κ°μ λ ꡬλΆν΄μ£Όλ μν μ νμ£ .
1. λ§€κ°λ³μμ νλλͺ μ΄ κ°μ λ ꡬλΆνκΈ° μν΄
Car(String model, String color, int maxSpeed) {
this.model = model; // this.modelμ νλ, modelμ λ§€κ°λ³μ
this.color = color;
this.maxSpeed = maxSpeed;
}
2. μμ±μμμ λ€λ₯Έ μμ±μ νΈμΆνκΈ° (μμ±μ 체μ΄λ)
Car() {
this("μ μ μμ", "ν°μ", 120); // λ§€κ°λ³μκ° μλ μμ±μ νΈμΆ
}
Car(String model, String color, int maxSpeed) {
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
}
π‘ this()λ₯Ό μ΄μ©ν λ€λ₯Έ μμ±μ νΈμΆμ μμ±μμ 첫 μ€μμλ§ κ°λ₯ν©λλ€!
3. λ©μλμμ μμ μ κ°μ²΄λ₯Ό λ°νν λ
public Car setModel(String model) {
this.model = model;
return this; // λ©μλ 체μ΄λμ κ°λ₯νκ² ν¨
}
// μ¬μ© μ
myCar.setModel("μλ°λΌ").setColor("νλμ");
π μ κ·Ό μ μ΄μμ μΊ‘μν
μ κ·Ό μ μ΄μ(Access Modifier)
μ κ·Ό μ μ΄μλ ν΄λμ€, νλ, λ©μλ, μμ±μ λ±μ μ κ·Ό λ²μλ₯Ό μ ννλ ν€μλμ λλ€.
Javaμλ 4κ°μ§ μ κ·Ό μ μ΄μκ° μμ΅λλ€
μ μ΄μ | μ€λͺ |
public | λꡬλ μ κ·Ό κ°λ₯ |
private | ν΄λμ€ λ΄λΆμμλ§ μ κ·Ό κ°λ₯ |
protected | κ°μ ν¨ν€μ§ λλ μμ ν΄λμ€μμ μ κ·Ό κ°λ₯ |
(default) | κ°μ ν¨ν€μ§μμλ§ μ κ·Ό κ°λ₯ (λͺ μ X) |
public class Sample {
private int hidden; // μΈλΆμμ μ κ·Ό β
public String visible = ""; // μΈλΆμμ μ κ·Ό β
protected void sayHello() {
System.out.println("Hello");
}
}
μΊ‘μν(Encapsulation)
κ°μ²΄μ μμ±(νλ)μ μΈλΆμμ μ§μ μ κ·Όνμ§ λͺ»νλλ‘ λ§κ³ , λ©μλλ₯Ό ν΅ν΄ μ μ΄νλ λ°©μμ λλ€.
→ λ΄λΆ ꡬνμ μ¨κΈ°κ³ , νμν κΈ°λ₯λ§ μΈλΆμ 곡κ°νλ λ°©μμ΄μμ!
μΊ‘μνμ μ₯μ :
- λ°μ΄ν° λ³΄νΈ (λ°μ΄ν° λ¬΄κ²°μ± μ μ§)
- μ μ§λ³΄μ μ©μ΄μ± ν₯μ
- μ¬μ©μμκ² νμν κΈ°λ₯λ§ μ 곡
κ°μ₯ μΌλ°μ μΈ μΊ‘μν λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
- νλλ₯Ό privateμΌλ‘ μ μΈ
- νλμ μ κ·ΌνκΈ° μν κ³΅κ° getter/setter λ©μλ μ 곡
public class Student {
// νλλ₯Ό privateμΌλ‘ μ μΈ
private String name;
private int age;
private int score;
// μμ±μ
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// getter λ©μλ
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getScore() {
return score;
}
// setter λ©μλ
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
if (age > 0) { // μ ν¨μ± κ²μ¬
this.age = age;
}
}
public void setScore(int score) {
if (score >= 0 && score <= 100) { // μ ν¨μ± κ²μ¬
this.score = score;
} else {
System.out.println("μ μλ 0~100 μ¬μ΄μ¬μΌ ν©λλ€.");
}
}
}
π μΊ‘μνμ ν΅μ¬μ νλλ₯Ό privateμΌλ‘ μ μΈνκ³ , getter/setterλ₯Ό ν΅ν΄μλ§ μ κ·Όνλλ‘ μ ννλ κ²μ λλ€. μ΄λ κ² νλ©΄ setterμμ μ ν¨μ± κ²μ¬λ₯Ό ν΅ν΄ μλͺ»λ κ°μ΄ μ€μ λλ κ²μ λ°©μ§ν μ μμ΅λλ€.
π λ§λ¬΄λ¦¬
μ€λμ Javaμ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° κΈ°λ³Έ κ°λ μΈ ν΄λμ€, κ°μ²΄, μμ±μ, this ν€μλ, κ·Έλ¦¬κ³ μ κ·Ό μ μ΄μμ μΊ‘μνμ λν΄ μμ보μμ΅λλ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ νμ€ μΈκ³μ κ°λ κ³Ό μ¬λ¬Όμ κ°μ²΄λ‘ λͺ¨λΈλ§νμ¬ νλ‘κ·Έλλ°νλ λ°©λ²λ‘ μΌλ‘, 볡μ‘ν λ¬Έμ λ₯Ό μμ κ°μ²΄ λ¨μλ‘ λλμ΄ ν΄κ²°νλ λ° ν° κ°μ μ΄ μμ΅λλ€.
μ΄λ¬ν κ°λ λ€μ Java νλ‘κ·Έλλ°μ κΈ°μ΄κ° λλ―λ‘ νμ€ν μ΄ν΄νλ κ²μ΄ μ€μν©λλ€.
λ€μ μκ°μλ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λ λ€λ₯Έ μ€μ κ°λ μΈ μμ, λ€νμ±, μΆμνμ λν΄ μμλ³΄κ² μ΅λλ€.
κΆκΈν λ΄μ©μ΄λ μΆκ°λ‘ μκ³ μΆμ κ°λ μ΄ μλ€λ©΄ λκΈλ‘ λ¨κ²¨μ£ΌμΈμ π
'β¨οΈ Language > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μΆμνμ λ€νμ±μΌλ‘ μ μ°ν μ½λ μ€κ³νκΈ° (0) | 2025.05.13 |
---|---|
[Java] μμκ³Ό λ©μλ νμ₯μΌλ‘ μ½λ μ¬μ¬μ©μ± λμ΄κΈ° (0) | 2025.05.12 |
[Java] Java μ μ΄λ¬Έ μμ μ 볡! (0) | 2025.05.10 |
[Java] κΈ°μ΄ λ¬Έλ² - λ³μ, μμ, μλ£ν, μ°μ°μ μμ μ 리! (0) | 2025.05.08 |
[Java] μ£Όμμ μ’ λ₯μ μ¬μ©λ² (1) | 2025.04.17 |