πŸŸͺ 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): 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” λ©”μ„œλ“œ. ν΄λž˜μŠ€μ™€ λ™μΌν•œ 이름을 κ°€μ§€λ©° λ°˜ν™˜ νƒ€μž…μ΄ μ—†μŒ.

 

 

λ°˜μ‘ν˜•