Tôi đang tính lại một số mã được thừa kế, nhưng bị cản trở bởi quyết định thiết kế và không thể tìm ra các thuật ngữ thích hợp cho google này. Người tiền nhiệm của tôi sẽ sử dụng các khối như thế này:Trong Java, tại sao có một khối mã không có từ khóa, chỉ cần dấu ngoặc nhọn
public class ChildClass extends ParentClass {
{
inheritedVar = "someVal";
}
public ChildClass(){ /* constructor exists */ }
// rest of code
}
Điểm tuyên bố một khối mã không có từ khóa là gì? Nó không hoạt động như một khối tĩnh, tôi không tin. Nó là một thay thế cho thiết lập trong constructor? Điều này sẽ có một số hiệu ứng nếu một nhà máy đã được sử dụng (mà trong trường hợp này nó không)? Tôi tìm thấy một chủ đề liên quan ở đây trên this happening in C nhưng lý do (phạm vi & khai báo biến) dường như không liên quan đến Java.
Bất kỳ ý tưởng hay ý tưởng nào về "lý do" này sẽ được đánh giá cao. Thật dễ dàng để tái yếu tố này, tôi chỉ tò mò vào thời điểm này.
+1 để chỉ ra việc sử dụng chính xác khối này. – birryree
+1: Tôi đồng ý về các phương thức khởi tạo được đặt tên. Tuy nhiên, với điều kiện chỉ có một hàm tạo, toàn bộ điểm của khối này trong cơ sở mã của tôi dường như là vô nghĩa. – Riggy
@Riggy, chắc chắn là không cần thiết. – Mike