số Từ section 8.4.2 of the Java Language Spec:
Hai phương pháp có chữ ký cùng nếu họ có cùng tên và lập luận loại.
Hai phương pháp hoặc constructor tờ khai M và N có các loại lập luận tương tự nếu tất cả các điều kiện sau đây giữ:
Họ có cùng một số chính thức thông số (có thể không) Họ có cùng số tham số kiểu (có thể là 0) Hãy để các tham số kiểu chính thức của M là và để là loại thông số chính thức N. Sau khi đổi tên mỗi lần xuất hiện của kiểu Bi trong N thành Ai giới hạn của correspon ding loại biến và các loại đối số của M và N là giống nhau.
Vì vậy, hai phương pháp có cùng tên và đối số nhưng có các ngoại lệ được khai báo khác nhau, chúng có cùng chữ ký.
Bên cạnh đó, từ the document Bozho quotes:
Định nghĩa: Hai trong số các thành phần của một bản tuyên bố phương pháp bao gồm các phương pháp chữ ký tên -the của phương pháp và loại tham số.
Không đề cập đến trường hợp ngoại lệ có ...
EDIT: Đối trọng một phương pháp (hoặc thực hiện một giao diện), từ section 8.4.8.3:
Một phương pháp kê khai phải không có một ném mệnh đề xung đột (§8.4.6) với bất kỳ phương pháp nào mà nó ghi đè hoặc ẩn; nếu không, xảy ra lỗi biên dịch .
Nguồn
2010-05-07 09:58:18
@ Jon Skeet Tại sao sau đó tôi không thể có công khai void run() ném IOException trong một lớp học mà thực hiện Runnable? –
Jon là đúng :) Nhưng có lẽ một cái gì đó cho tác giả để lưu ý. Bạn có thể khai báo rằng các phương thức của bạn đưa ra một ngoại lệ thấp hơn trong thừa kế ngoại lệ so với ngoại lệ được khai báo trong phương thức giao diện/siêu lớp và nó vẫn sẽ là một thực thi/ghi đè hợp lệ của phương thức. – Justin
@Khi tôi biết bạn: Bởi vì việc triển khai giao diện hoặc ghi đè phương thức phải làm nhiều hơn là chỉ khớp với chữ ký. Nó cũng phải tránh tuyên bố rằng nó sẽ ném bất kỳ ngoại lệ kiểm tra nhiều hơn những người được tuyên bố. –