From f4846f54c9a62cfb6de77c380125c78891c11c78 Mon Sep 17 00:00:00 2001 From: Jung Seonghun <80201773+seonghun-dev@users.noreply.github.com> Date: Sun, 20 Aug 2023 11:48:25 +0900 Subject: [PATCH] =?UTF-8?q?[Item40]:=20@Override=20=EC=95=A0=EB=84=88?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EC=85=98=EC=9D=84=20=EC=9D=BC=EA=B4=80?= =?UTF-8?q?=EB=90=98=EA=B2=8C=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=9D=BC=20(#1?= =?UTF-8?q?15)(=EC=84=B1=ED=9B=88)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...54\354\232\251\355\225\230\353\235\274.md" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "Ch06/item40/@Override_\354\225\240\353\204\210\355\205\214\354\235\264\354\205\230\354\235\204_\354\235\274\352\264\200\353\220\230\352\262\214_\354\202\254\354\232\251\355\225\230\353\235\274.md" diff --git "a/Ch06/item40/@Override_\354\225\240\353\204\210\355\205\214\354\235\264\354\205\230\354\235\204_\354\235\274\352\264\200\353\220\230\352\262\214_\354\202\254\354\232\251\355\225\230\353\235\274.md" "b/Ch06/item40/@Override_\354\225\240\353\204\210\355\205\214\354\235\264\354\205\230\354\235\204_\354\235\274\352\264\200\353\220\230\352\262\214_\354\202\254\354\232\251\355\225\230\353\235\274.md" new file mode 100644 index 0000000..db0a0ae --- /dev/null +++ "b/Ch06/item40/@Override_\354\225\240\353\204\210\355\205\214\354\235\264\354\205\230\354\235\204_\354\235\274\352\264\200\353\220\230\352\262\214_\354\202\254\354\232\251\355\225\230\353\235\274.md" @@ -0,0 +1,38 @@ +# @Override 애너테이션을 일관되게 사용하라 + +```java +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 bigram) { + return bigram.first == first && bigram.second == second; + } + + public int hashCode() { + return 31 * first + second; + } + + public static void main(String[] args) { + Set 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()); + } +} +``` + +- equals와 hashcode메서들르 함께 재정의 하였음 +- 하지만, equals를 재정의한 것이 아니라 다중 정의 하였음 +- Object의 eqauls를 재정의 하려면 매개변수 타입을 Object로 해야함 +- Object의 equals를 사용해 같은 소문자 바이그램이 각각 다른 객체로 인식 +- @Override 어노테이션을 통해서 재정의 의도를 표시해야함 +- 상위 클래스를 재정의 할때는 무조건 @Override 어노테이션을 표기할 것 \ No newline at end of file