πͺ Backend-Java
10. κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°OOP,ν΄λμ€μ ꡬμ±μμ, μΈμ€ν΄μ€ / μ μ λ©€λ², μμ±μμ λνμ¬ μμ½μ 리
ramen2
2024. 7. 11. 21:59
λ°μν
β κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (OOP)
- κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ λͺ¨λΈλ§νμ¬ νλ‘κ·Έλ¨μ μμ±νλ νλ‘κ·Έλλ° ν¨λ¬λ€μ. OOPμ ν΅μ¬ κ°λ μ ν΄λμ€μ κ°μ²΄
[OOPνΉμ§]
- ν΄λμ€: κ°μ²΄μ μ€κ³λ. κ°μ²΄μ μμ±(λ°μ΄ν°)κ³Ό λ©μλ(λμ)λ₯Ό μ μν¨.
- κ°μ²΄: ν΄λμ€μ μΈμ€ν΄μ€. ν΄λμ€μμ μ μν μμ±κ³Ό λ©μλλ₯Ό κ°μ§ μ€μ λ°μ΄ν° ꡬ쑰.
- μμ: κΈ°μ‘΄ ν΄λμ€λ₯Ό νμ₯νμ¬ μλ‘μ΄ ν΄λμ€λ₯Ό λ§λλ λ°©λ².
- λ€νμ±: λμΌν μΈν°νμ΄μ€λ₯Ό μ¬μ©νμ¬ λ€λ₯Έ λμμ ꡬνν μ μλ λ₯λ ₯.
- μΊ‘μν: λ°μ΄ν°λ₯Ό μλνμ¬ κ°μ²΄μ λ΄λΆ μνλ₯Ό 보νΈνλ λ°©λ².
β ν΄λμ€
- ν΄λμ€λ κ°μ²΄λ₯Ό μ μνλ ν. ν΄λμ€λ μμ±κ³Ό λ©μλλ₯Ό ν¬ν¨νμ¬ κ°μ²΄μ ꡬ쑰μ λμμ μ μ.
public class Dog {
// ν΄λμ€ μμ± (μ μ λ©€λ²)
public static String species = "Canis familiaris";
// μΈμ€ν΄μ€ μμ± (μΈμ€ν΄μ€ λ©€λ²)
private String name;
private int age;
// μμ±μ (constructor)
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
// μΈμ€ν΄μ€ λ©μλ
public String description() {
return name + " is " + age + " years old";
}
// μ μ λ©μλ
public static String bark() {
return "Woof!";
}
}
β μΈμ€ν΄μ€ λ©€λ²
- μΈμ€ν΄μ€ λ©€λ²λ ν΄λμ€μ κ° μΈμ€ν΄μ€μ μνλ λ³μμ λ©μλ. μμ±μλ₯Ό ν΅ν΄ μ΄κΈ°νν¨.
- κ°μ²΄λ§λ€ λ³λλ‘ μ‘΄μ¬νλ μμ±κ³Ό λ©μλ.
- this ν€μλλ₯Ό ν΅ν΄ μ κ·Όνκ³ μ¬μ©ν¨.
public class Main {
public static void main(String[] args) {
// Dog ν΄λμ€μ μΈμ€ν΄μ€ μμ±
Dog dog1 = new Dog("Buddy", 3);
Dog dog2 = new Dog("Lucy", 4);
// μΈμ€ν΄μ€ λ©€λ² μ κ·Ό
System.out.println(dog1.name); // μΆλ ₯: Buddy
System.out.println(dog2.age); // μΆλ ₯: 4
System.out.println(dog1.description()); // μΆλ ₯: Buddy is 3 years old
}
}
β μ μ λ©€λ²
- μ μ λ©€λ²λ ν΄λμ€ μ체μ μνλ λ³μμ λ©μλ. μΈμ€ν΄μ€κ° μλ ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Ό.
- static ν€μλλ₯Ό μ¬μ©νμ¬ μ μν¨.
- this ν€μλλ₯Ό μ¬μ©νμ§ μμ.
public class Main {
public static void main(String[] args) {
// μ μ λ©€λ² μ κ·Ό
System.out.println(Dog.species); // μΆλ ₯: Canis familiaris
System.out.println(Dog.bark()); // μΆλ ₯: Woof!
}
}
β
μμ±μ (Constructor)
- μμ±μλ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ννλ λ©μλ. ν΄λμ€μ λμΌν μ΄λ¦μ κ°μ§λ©° λ°ν νμ μ΄ μμ
- μΈμ€ν΄μ€κ° μμ±λ λ μλμΌλ‘ νΈμΆλ¨.
- μΈμ€ν΄μ€ λ©€λ²λ₯Ό μ΄κΈ°νν¨.
public class Dog {
private String name;
private int age;
// μμ±μ (Constructor)
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
// κΈ°ν λ©μλ...
}
// μΈμ€ν΄μ€ μμ± μ μμ±μκ° νΈμΆλ¨
Dog dog1 = new Dog("Buddy", 3);
Dog dog2 = new Dog("Lucy", 4);
// μ΄κΈ°νλ μΈμ€ν΄μ€ λ©€λ² νμΈ
System.out.println(dog1.name); // μΆλ ₯: Buddy
System.out.println(dog2.age); // μΆλ ₯: 4
βοΈ νΉμ§ ν μ€ μ 리
- κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (OOP): κ°μ²΄λ₯Ό μ¬μ©νμ¬ νλ‘κ·Έλ¨μ λͺ¨λΈλ§νλ νλ‘κ·Έλλ° ν¨λ¬λ€μ.
- ν΄λμ€: κ°μ²΄λ₯Ό μ μνλ μ€κ³λ. μμ±κ³Ό λ©μλλ₯Ό ν¬ν¨ν¨.
- μΈμ€ν΄μ€ λ©€λ²: κ° κ°μ²΄μ μνλ λ³μμ λ©μλ. μμ±μλ₯Ό ν΅ν΄ μ΄κΈ°νλ¨. this ν€μλλ₯Ό ν΅ν΄ μ κ·Όν¨.
- μ μ λ©€λ²: ν΄λμ€ μ체μ μνλ λ³μμ λ©μλ. ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Όν¨. static ν€μλλ₯Ό μ¬μ©νμ¬ μ μλ¨.
- μμ±μ (Constructor): ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ννλ λ©μλ. ν΄λμ€μ λμΌν μ΄λ¦μ κ°μ§λ©° λ°ν νμ
μ΄ μμ.
λ°μν