NMP-Study / EffectiveJava2022

Effective Java Study 2022
5 stars 0 forks source link

아이템 40. @Override 애너테이션을 일관되게 사용하라 #40

Closed okhee closed 2 years ago

KimYunsang-v commented 2 years ago

@Override

코드 40-1 예제 코드

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 애너테이션을 달자!

예외: 추상 클래스의 추상 메서드를 재정의할 때는 굳이 @Override를 달지 않아도 된다. (구현하지 않은 추상 메서드가 남아 있다면 컴파일러가 알려주기 때문에)

기타