πŸ“•μƒμ„±μžμ™€ μ†Œλ©Έμž

dev_itzel_02✨·2024λ…„ 8μ›” 26일
post-thumbnail

πŸ·οΈμƒμ„±μž

클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ ν˜ΈμΆœλ˜λŠ” νŠΉλ³„ν•œ λ©”μ†Œλ“œ

  • μƒμ„±μžμ˜ 이름은 클래슀 이름과 동일해야 ν•˜λ©°, λ°˜ν™˜ νƒ€μž…μ„ κ°€μ§€μ§€ μ•ŠμŒ.
  • μƒμ„±μžλ₯Ό 톡해 객체 μ΄ˆκΈ°ν™” 과정을 μ •μ˜ν•˜κ³ , ν•„μš”ν•œ 데이터λ₯Ό 전달받을 수 있음.
  • μƒμ„±μžλŠ” μ˜€λ²„λ‘œλ”©μ΄ κ°€λŠ₯ν•˜λ―€λ‘œ, 같은 μ΄λ¦„μ˜ μƒμ„±μžλ₯Ό μ—¬λŸ¬ 개 μ •μ˜ν•  수 있음.
  • μƒμ„±μžκ°€ λͺ…μ‹œμ μœΌλ‘œ μ •μ˜λ˜μ§€ μ•Šμ€ 경우, μ»΄νŒŒμΌλŸ¬κ°€ κΈ°λ³Έ μƒμ„±μžλ₯Ό μ œκ³΅ν•¨.

☝🏼기본 μƒμ„±μž

λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ§€ μ•ŠλŠ” μƒμ„±μž

public class Car {
    public Car() {
        // μ΄ˆκΈ°ν™” μž‘μ—…
    }
}
public class Main {
    public static void main(String[] args) {
        // Car 객체 생성
        Car car = new Car(); // 빈 객체 생성
    }
}
  • 객체 생성 μ‹œ μ•„λ¬΄λŸ° μž‘μ—…λ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠμŒ.(μ΄ˆκΈ°ν™” κ³Όμ • x)

✌🏼λͺ…μ‹œμ  μƒμ„±μž

λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„ 객체λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” μƒμ„±μž

public class Car {
    private String model;
    
    public Car(String model) {
        // μ΄ˆκΈ°ν™” μž‘μ—…
        this.model = model;
    }
}
public class Main {
    public static void main(String[] args) {
        // Car 객체 생성
        Car car = new Car("Sonata"); 
    }
}
  • 객체 생성 μ‹œ ν•„μš”ν•œ 데이터λ₯Ό μ „λ‹¬ν•˜μ—¬ 객체 μƒνƒœλ₯Ό μ„€μ •ν•  수 있음.
  • λͺ…μ‹œμ  μƒμ„±μžκ°€ μ •μ˜λ˜λ©΄, μ»΄νŒŒμΌλŸ¬λŠ” μžλ™μœΌλ‘œ κΈ°λ³Έ μƒμ„±μžλ₯Ό μΆ”κ°€ν•˜μ§€ μ•ŠμŒ.

πŸ·οΈμ†Œλ©Έμž

객체가 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ©΄ κ°€λΉ„μ§€ 컬렉터에 μ˜ν•΄ μžλ™μœΌλ‘œ λ©”λͺ¨λ¦¬μ—μ„œ 제거됨.

  • μžλ°”μ—λŠ” μ†Œλ©ΈμžλΌλŠ” κ°œλ…μ΄ μ—†μŒ.
  • λŒ€μ‹  κ°€λΉ„μ§€ 컬렉터가 λ©”λͺ¨λ¦¬ 관리λ₯Ό μžλ™μœΌλ‘œ μˆ˜ν–‰ν•¨.
  • finalize()λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•΄ κ°€λΉ„μ§€ 컬렉터가 객체λ₯Ό μ œκ±°ν•˜κΈ° 전에 μˆ˜ν–‰ν•  μž‘μ—…μ„ μ •μ˜ν•  수 μžˆμ§€λ§Œ ꢌμž₯λ˜μ§€ μ•ŠμŒ.

why❓

➑️finalize()λŠ” 객체가 λ©”λͺ¨λ¦¬μ—μ„œ 제거되기 직전에 κ°€λΉ„μ§€ 컬렉터에 μ˜ν•΄ μžλ™μœΌλ‘œ 호좜됨. But, finalize() 호좜 μ‹œμ μ΄ λͺ…ν™•ν•˜μ§€ μ•Šκ³ , λ•Œλ•Œλ‘œ ν”„λ‘œκ·Έλž¨μ˜ μ„±λŠ₯을 μ €ν•˜μ‹œν‚€λ―€λ‘œ λŒ€μ‹  try-with-resourcesλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯됨.

public class Car {
    // μƒμ„±μž
    public Car() {
        // μ΄ˆκΈ°ν™” μž‘μ—…
    }
    
    // finalize λ©”μ†Œλ“œ μ„ μ–Έ
    protected void finalize() throws Throwable {
        // 정리 μž‘μ—…
        super.finalize();
    }
}
profile
πŸœπŸ‘£steadinessπŸœπŸ‘£

0개의 λŒ“κΈ€