[μ΄νŽ™ν‹°λΈŒ μžλ°”] Item22. μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œλ§Œ μ‚¬μš©ν•˜λΌ.

2023. 3. 8. 13:43ㆍJAVA/Effective JAVA

728x90

 

[μ΄νŽ™ν‹°λΈŒ μžλ°”] Item22. μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œλ§Œ μ‚¬μš©ν•˜λΌ. 

μΈν„°νŽ˜μ΄μŠ€λŠ” μžμ‹ μ„ κ΅¬ν˜„ν•œ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” νƒ€μž… 역할을 ν•œλ‹€. 

달리 말해, ν΄λž˜μŠ€κ°€ μ–΄λ–€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€λŠ” 것은 μžμ‹ μ˜ μΈμŠ€ν„΄μŠ€λ‘œ 무엇을 ν•  수 μžˆλŠ”μ§€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ•Œλ €μ£ΌλŠ” 것이닀. 

λ”°λΌμ„œ μΈν„°νŽ˜μ΄μŠ€λŠ” 였직 이 μš©λ„λ‘œλ§Œ μ‚¬μš©ν•˜λŠ” 것이 λ§žλ‹€..!! 

 

 

μΈν„°νŽ˜μ΄μŠ€λ₯Ό νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©ν•˜λŠ” 것이 μ•„λ‹Œ μ˜ˆλ‘œλŠ” μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€κ°€ μžˆλ‹€. 

public interface PhysicalConstants {

    // μ•„λ³΄κ°€λ“œλ₯΄ 수 (1/λͺ°)
    static final double AVOGADROS_NUMBER = 6.022_14_857e23;

    // 볼츠만 μƒμˆ˜ (J/K)
    static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;

    // μ „μž μ§ˆλŸ‰ (kg)
    static final double ELECTRON_MASS = 9.109_383_56e-31;
}

μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λž€ λ©”μ„œλ“œ 없이, μƒμˆ˜λ₯Ό λœ»ν•˜λŠ” static final ν•„λ“œλ‘œλ§Œ 가득 μ°¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§ν•œλ‹€. 

public class MyClass implements PhysicalConstants
{
    public static void main(String[] args) {
        System.out.println("BOLTZMANN_CONSTANT = " + BOLTZMANN_CONSTANT);
    }
}

그리고 이 μƒμˆ˜λ“€μ„ μ‚¬μš©ν•˜λ €λŠ” ν΄λž˜μŠ€μ—μ„œλŠ” μ •κ·œν™”λœ 이름을 μ“°λŠ”κ±Έ ν”Όν•˜κ³ μž κ·Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό implements ν•œλ‹€. 

μ΄λ ‡κ²Œ ν•΄λ‹Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό implements ν•΄μ„œ 값을 직접 μ‚¬μš©ν•˜κ³ μž ν• λ €κ³  ν•˜λŠ”λ° 이건 μΈν„°νŽ˜μ΄μŠ€μ˜ 역할을 λ¬΄μ‹œν•˜κ³  μ‚¬μš©ν•˜λŠ” μ•ˆν‹°νŒ¨ν„΄μ΄λ‹€!! 

μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμˆ˜λ₯Ό μ •μ˜ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©ν•˜λ©΄ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ ν˜Όλž€μ„ μ£Όκ³ , μ΄λ ‡κ²Œ 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” μƒμˆ˜λŠ” λ‚΄λΆ€ κ΅¬ν˜„μ— ν•΄λ‹Ήν•˜λŠ”λ° μ΄λ ‡κ²Œ μΈν„°νŽ˜μ΄μŠ€μ— μ •μ˜λ₯Ό ν•˜λ©΄ λ‚΄λΆ€ κ΅¬ν˜„μ„ 클래슀의 api둜 λ…ΈμΆœν•˜λŠ” ν–‰μœ„κ°€ λœλ‹€.

 

μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©ν•΄μ•Όμ§€ μ΄λ ‡κ²Œ μƒμˆ˜λ₯Ό μ •μ˜ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©ν•˜λ©΄ μ•ˆλœλ‹€!!! 

(μƒμˆ˜λ₯Ό μ •μ˜ν•œ μœ„μ˜ ν΄λž˜μŠ€κ°€ Myclass의 νƒ€μž…μ€ μ•„λ‹ˆμž–μŒ) 

 

 

public final class PhysicalConstants { // 상속을 λ§‰μ•„μ„œ μ‚¬μš©ν•  수 있음!!
    private PhysicalConstants() {
    }

    // μ•„λ³΄κ°€λ“œλ₯΄ 수 (1/λͺ°)
    static final double AVOGADROS_NUMBER = 6.022_14_857e23;

    // 볼츠만 μƒμˆ˜ (J/K)
    static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;

    // μ „μž μ§ˆλŸ‰ (kg)
    static final double ELECTRON_MASS = 9.109_383_56e-31;
}

λŒ€μ‹  μ΄λ ‡κ²Œ μœ ν‹Έλ¦¬ν‹° 클래슀둜 λ”°λ‘œ λ§Œλ“€μ–΄μ„œ 상속을 λͺ»ν•˜κ²Œ ν•˜κ³ , μΈμŠ€ν„΄μŠ€ν™” ν•  수 없도둝 막아두고, μƒμˆ˜λ₯Ό μ •μ˜ν•˜λ©΄ λœλ‹€. 

μœ ν‹Έλ¦¬ν‹° 클래슀 μ™Έμ—λŠ” μ—΄κ±° νƒ€μž…μœΌλ‘œ λ‚˜νƒ€λ‚΄κΈ° μ ν•©ν•œ μƒμˆ˜λΌλ©΄ μ—΄κ±°νƒ€μž…μœΌλ‘œ λ§Œλ“€μ–΄μ„œ κ³΅κ°œν•˜λ©΄ 되고, νŠΉμ • ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€μ™€ κ°•ν•˜κ²Œ μ—°κ΄€λœ μƒμˆ˜λΌλ©΄ κ·Έ ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€ μžμ²΄μ— μΆ”κ°€ν•˜λ©΄ λœλ‹€. 

 

 

 

 

 

πŸ“š 정리

μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œλ§Œ μ‚¬μš©ν•΄μ•Όμ§€ μƒμˆ˜ 곡개용 μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©ν•˜λ©΄ μ•ˆλœλ‹€!!!! 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90