item 40 JungHyunLyoo - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

@Override μ• λ„ˆν…Œμ΄μ…˜μ„ μΌκ΄€λ˜κ²Œ μ‚¬μš©ν•˜λΌ

μžλ°”κ°€ 기본으둜 μ œκ³΅ν•˜λŠ” μ• λ„ˆν…Œμ΄μ…˜ 쀑 λ³΄ν†΅μ˜ ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ κ°€μž₯ μ€‘μš”ν•œ 것은 @Override일 것이닀.

이 μ• λ„ˆν…Œμ΄μ…˜μ€ λ‹€μ€‘μ •μ˜(overload)κ°€ μ•„λ‹Œ μž¬μ •μ˜(override)λΌλŠ” 것을 μ»΄νŒŒμΌλŸ¬μ—κ²Œ λͺ…ν™•νžˆ μ „λ‹¬ν•œλ‹€.

이 μ• λ„ˆν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜λ©΄ μœ„ 두 κ°œλ…μ„ ν˜Όλ™(?)ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 경우λ₯Ό 방지할 수 μžˆλ‹€.

package effectivejava.chapter6.item40;
import java.util.*;

public class Bigram {
    private final char first;
    private final char second;

    public Bigram(char first, char second) {
        this.first  = first;
        this.second = second;
    }

    public boolean equals(Bigram b) {
        return b.first == first && b.second == second;
    }

    public int hashCode() {
        return 31 * first + second;
    }

    public static void main(String[] args) {
        Set<Bigram> s = new HashSet<>();
        for (int i = 0; i < 10; i++)
            for (char ch = 'a'; ch <= 'z'; ch++)
                s.add(new Bigram(ch, ch));
        System.out.println(s.size());
    }
}

μƒμœ„ 클래슀의 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜λ €λŠ” λͺ¨λ“  λ©”μ„œλ“œμ— @Override μ• λ„ˆν…Œμ΄μ…˜μ„ λ‹¬μž!

사싀 ꡬ체 ν΄λž˜μŠ€μ—μ„œ μƒμœ„ 클래슀의 좔상 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•  λ•ŒλŠ” ꡳ이 달지 μ•Šμ•„λ„ λœλ‹€.(μ»΄νŒŒμΌλŸ¬κ°€ 체크해주기 λ•Œλ¬Έ)

κ·Έλž˜λ„ λ‹¬μ•„μ„œ λ‚˜μ κ±΄ μ—†λ‹€! 였히렀 가독성이 λ†’μ•„μ§ˆ 수 μžˆλ‹€.

⚠️ **GitHub.com Fallback** ⚠️