반응형

override

    static method와 Override hiding 대한 정리

    static 메소드를 자기고 있는 클래스를 상속받은 자식 클래스에서 그 static 메소드를 override 할 수 있을까? 안될거 알지만 한번 확인해보고 싶었다. 먼저 static method를 가지고 있는 Parent을 만들었다. 123456789101112/** * 부모 클래스 */static class Parent { public static void getData() { System.out.println("부모 getData"); } public void method() { System.out.println("부모 method"); }}Colored by Color Scriptercs 그리고 이를 상속하는 Child 클래스를 만들어보자.123456789101112/** * 자식 클래스 */sta..

    어노테이션 - 규칙 36 Override 어노테이션은 일관되게 사용하라.

    자바 1.5에 어노테이션이 추가되었을 때, 자바 기본 라이브러리에 몇 가지 어노테이션 자료형이 추가되었다. 그 중 대표적인 어노테이션 @Override이다. @Override 어노테이션은 메서드 선언부에서만 사용할 수 있고, 부모 자료형에 선언된 메서드를 재정의 할 때 사용한다. 만약 메서드를 재정의 할 때 @Override 어노테이션을 입력하지 않으면 다음과 같은 문제가 발생할 수 있다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162package effective36; import java.util.Objects; /** * Stdudent c..

    모든 객체의 공통 메서드 - 규칙 11 clone을 재정의할 때는 신중하라

    Cloneable은 객체의 복제를 허용한다는 사실을 알리는데 쓰려고 고안된 인터페이스이다. 하지만 Cloneable은 선언된 메서드가 없는 마커 인터페이스로, 상위 클래스의 protected 멤버가 어떻게 동작할지 규정하는 용도로 쓰인다. 또한 객체의 cloneable을 구현하면, Object의 clone 메서드는 해당 객체를 필드 단위로 복사한 객체를 반환한다. Cloneable을 구현하지 않았다면, clone 메서드는 CloneNotSupportedException을 던질 것이다. Java API 문서에 기재된 clone 메서드의 명세는 다음과 같다. - 객체의 복사본을 만들어서 반환한다. - "복사"의 정확한 의미는 클래스마다 다르다. - 일반적으로 x.clone() != x 는 참이다. - x.c..

    HashMap에서 사용되는 인스턴스 객체의 equals()와 hashCode() 재 정의 중요성

    HashMap에 저장되어 있는 키 값을 통해 저장된 value 값을 찾을 때, 입력된 object와 동일한 hashCode 값을 가지고 있는키를 찾기 위해 객체에 정의된 equals 메소드를 사용한다. 두 개의 object를 재 정의한 equals를 통해 비교한 후 동일한 객체 일 경우 동일한 hashCode값을 반환한다. 그렇기에 instance 객체를 hashMap에 key값으로 사용하고 싶은 경우에는 비교에 사용되는 equals()와 동일한 객체에 대한 동일한 hashCode 값을 반환하는 hashCode() 메소드를 Override 해야한다. 참고자료 https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.K..

반응형