Tôi hiện đang đọc Java hiệu quả của Joshua Bloch và Mục 17 là 'Thiết kế và tài liệu để thừa kế hoặc người khác cấm nó'. Tác giả đề nghị cấm thừa kế theo mặc định.Có thể loại bỏ cuối cùng từ một định nghĩa lớp phá vỡ khả năng tương thích ngược?
Có an toàn không khi khai báo các lớp học theo mặc định và trong bản phát hành sau, hãy xóa từ khóa cuối cùng nếu cần mở rộng lớp học? Nó sẽ phá vỡ khả năng tương thích ngược với mã đã được biên dịch với một phiên bản trước?
Nếu có vẻ như là đặt cược an toàn hơn để làm cho tất cả các lớp cuối cùng và chỉ xóa nó trong bản phát hành trong tương lai nếu có nhu cầu được hỗ trợ tốt.
Nó phần nào phụ thuộc vào mức độ sống, API thở của bạn. Nếu bạn thực hiện thay đổi và phát hành mọi lúc, không phải chờ đợi một tuần để có được khả năng kế thừa. Nếu, mặt khác, Java đã làm điều đó với các lớp JDK cơ bản của chúng theo mặc định, nó sẽ làm cho các lập trình rơi nước mắt phải đợi 5 năm để sửa lỗi "". –
@Kirk Woll nếu phải mất 5 năm để thay đổi từ cuối đến cuối cùng, phải mất bao lâu để thay đổi từ phi thức đến cuối? – emory