Giả sử chúng ta có một lớp:Anonymous khởi của lớp với constructor bảo vệ
public class SomeClass {
protected SomeClass() {
}
}
Trong MainClass
nằm trong gói phần mềm khác nhau tôi đã cố gắng để thực hiện hai dòng:
public static void main(String[] args) {
SomeClass sac1 = new SomeClass();
SomeClass sac2 = new SomeClass() {};
}
Do protected
constructor, trong cả hai trường hợp tôi đã mong đợi chương trình thất bại. Để tôi ngạc nhiên, khởi tạo vô danh làm việc tốt. Ai đó có thể giải thích cho tôi tại sao phương pháp khởi tạo thứ hai là ok?
Tôi rất ngạc nhiên, điều tương tự cũng xảy ra khi bạn sử dụng một hàm tạo không có đối số. Trong trường hợp này tôi nghĩ rằng lời giải thích của bạn không còn đứng. – Andrei
@Andrei Tôi không đề cập đến tham số/đối số. Chúng không có vai trò trong kiểm tra khả năng truy cập. –
Không có trong kiểm tra accesibility, không. Nhưng nếu bạn có một lớp với chỉ một constructor được bảo vệ WITH params, bạn phải gọi một cách rõ ràng constructor của nó với các tham số, từ con. Tôi đã nói rằng quy tắc này dường như bị bỏ qua cho các lớp ẩn danh. – Andrei