Không thể tạo một đối tượng bằng cách gọi trực tiếp hàm tạo của lớp abstract
. Hàm khởi tạo của lớp abstract
có thể được gọi chỉ từ một lớp dẫn xuất. Do đó, có vẻ là đối với tôi rằng các hàm tạo của lớp trừu tượng phải là protected
hoặc gói riêng tư (sau này cho các trường hợp bất thường hạn chế sử dụng hàm tạo cho các lớp dẫn xuất trong gói). Tuy nhiên, Java cho phép hàm tạo của lớp abstract
là public
.Có lý do chính đáng cho một nhà xây dựng công cộng của một lớp trừu tượng
Có bất kỳ hoàn cảnh trong đó nó là hữu ích tuyên bố các nhà xây dựng của một lớp abstract
là public
, chứ không phải là protected
hoặc gói-tư nhân?
Đây không hoàn toàn trùng lặp với câu hỏi "Abstract class constructor access modifier": rõ ràng bạn có thể tuyên bố một hàm tạo là public
; Tôi muốn biết liệu có bao giờ có bất kỳ lý do nào để làm như vậy không. tốt. Dường như với tôi rằng không có. Tôi thấy rằng C# has a similar peculiarity.
Constructor không liên quan gì đến "Tạo" đối tượng. Nó chỉ là một phương thức được gọi trong khi "tạo" một đối tượng. Do đó, lớp Tóm tắt có thể có các hàm tạo công khai sẽ được gọi trong khi tạo cá thể của lớp Tóm tắt (qua Lớp con) và trong phương thức hàm dựng đó, bạn sẽ viết mã để khởi tạo các biến thành viên. http://stackoverflow.com/questions/260666/can-an-abstract-class-have-a-constructor?lq=1 –
Constructors cũng có thể là 'private', có thể được sử dụng trong chain constructor. –