@Override

문제 상황

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