[오늘의 배움] Java 이것저것

1574 단어 JavaJava

1. 동적/정적 바인딩

다형성 : 객체들이 동일한 메시지를 받아도 각 개체의 타입에 따라 다르게 동작하는 것
오버라이딩 : 실행 타임 다형성 (동적 바인딩)
오버로딩 : 컴파일 타임 다형성 (정적 바인딩)

  • 오버라이딩은 실행 타임 다형성이기 때문에, 컴파일 타임 확인 + 가독성을 위해 오버라이딩 하는 메소드 위에 @Override 에너테이션을 붙이는게 좋다.

  • 업캐스팅된 객체 메소드 호출 시 서브 클래스에 오버라이딩된 메소드가 무조건 실행된다

2. 유용한 Object 메소드들

  • obj.getClass() : 실행 타임에 객체의 클래스 정보를 반환한다
  • obj.equals() : 객체 주소 동일한지 검사해 불리언 값을 반환한다
  • obj.hashCode() : 객체의 해시 값을 반환한다
  • obj.toString() : 객체의 문자열 표현을 반환한다

3. static 메소드의 오버라이딩

static 메소드는 오버라이딩 할 수 없다. 자식 클래스는 부모 클래스의 static 메소드를 포함하지않고 (단 접근은 할 수 있다), 자식 클래스에서 선언한 static 메소드는 별개의 메소드로 상우 클래스의 static 메소드를 '숨기는' 역할을 한다.

4. 예외 처리 자원 반납

예외 처리 시 주의점 : 예외 발생 시 throw하면 자원이 반납되지 않을 수 있기 때문에, finally 블록에서 자원 반납을 한다.

또는 자바 7이상부터 AutoClosable 인터페이스를 구현한 클래스에 대해 try-with-resources를 통해 반납할 수도 있다.

try (자료형 변수 = 초기값) {
    ...
}

아래는 자주 발생하는 예외들이다. 익숙해지도록 하자.

좋은 웹페이지 즐겨찾기