Trong một lớp Java, một phương thức có thể được định nghĩa là final
, để đánh dấu rằng phương thức này có thể không bị ghi đè:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
Điều đó rõ ràng, và nó có thể được sử dụng để bảo vệ chống lại việc ghi đè vô tình, hoặc có thể là hiệu suất - nhưng đó không phải là câu hỏi của tôi.
Câu hỏi của tôi là: Từ quan điểm OOP tôi hiểu rằng, bằng cách định nghĩa một phương thức, final
người thiết kế lớp hứa hẹn phương thức này sẽ luôn hoạt động như được mô tả hoặc ngụ ý. Nhưng thường thì điều này có thể nằm ngoài tầm ảnh hưởng của tác giả lớp, nếu những gì phương thức đang làm phức tạp hơn thì chỉ cần phân phối một thuộc tính .
Các ràng buộc cú pháp là rõ ràng đối với tôi, nhưng ý nghĩa của ý nghĩa OOP là gì? Được final
sử dụng chính xác theo nghĩa này bởi hầu hết các tác giả lớp?
Một loại "hợp đồng" nào mà một final
phương pháp hứa hẹn?