재정의 메서드 예외 선언 이해
Java에서 하위 클래스의 메서드를 재정의할 때 재정의 메서드는 throw된 항목과 관련된 특정 규칙을 준수해야 합니다. 예외. 특히 재정의 메서드는 재정의된 메서드에서 선언한 것보다 새롭거나 더 광범위한 확인된 예외를 발생시킬 수 없습니다.
예를 들어 기본 클래스 메서드가 FileNotFoundException을 발생시키도록 선언하는 경우 하위 클래스의 재정의 메서드는 예외를 발생시킬 수 없습니다. SQLException, 예외 또는 하위 클래스가 아닌 기타 비런타임 예외 FileNotFoundException.
제한 이유
이 제한은 다형성 원칙과 Liskov 대체 원칙(LSP)에서 비롯됩니다. LSP에서는 프로그램 동작이 올바르게 유지되도록 모든 상황에서 하위 클래스가 기본 클래스를 대체할 수 있어야 한다고 명시합니다.
재정의 메서드가 더 광범위한 예외를 발생시킬 수 있다면 LSP를 위반하는 것입니다. 예를 들어 기본 클래스 메서드 foo()가 IOException을 발생시키도록 선언하고 재정의 메서드가 SQLException을 발생시키도록 선언하는 경우 컴파일러는 더 이상 호출자가 IOException을 처리하도록 강제하지 않습니다.
그러나 하위 클래스가 기본 클래스로 처리되는 경우 호출자는 재정의 메서드에서 발생하는 더 광범위한 예외를 처리할 것으로 예상하지 않거나 처리할 준비가 되어 있지 않을 수 있습니다. 이로 인해 런타임 예외가 발생하고 예측할 수 없는 동작이 발생합니다.
예
다음 코드를 고려하세요.
class A { public void foo() throws IOException {..} } class B extends A { @Override public void foo() throws SocketException {..} // allowed @Override public void foo() throws SQLException {..} // NOT allowed }
이 예에서 재정의 메서드는 클래스 B에서는 IOException의 하위 클래스이기 때문에 SocketException이 발생할 수 있습니다. 그러나 SQLException은 IOException의 하위 클래스가 아니기 때문에 SQLException을 발생시킬 수 없습니다.
검사되지 않은 예외
검사되지 않은 예외에는 이 제한이 적용되지 않습니다. 재정의된 메서드의 throw 절에 선언되었는지 여부에 관계없이 재정의된 메서드에 의해 발생할 수 있습니다.
위 내용은 하위 클래스 메서드가 상위 클래스 메서드보다 더 광범위한 검사 예외를 던질 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
