Tôi có một lớp trừu tượng A xác định các phương thức trừu tượng. Điều này có nghĩa rằng, đối với một lớp được instanciable, tất cả các phương pháp trừu tượng phải được thực hiện.Làm thế nào tôi có thể buộc một Constructor được định nghĩa trong tất cả các lớp con của lớp trừu tượng của tôi
Tôi muốn tất cả các lớp con của mình triển khai một hàm tạo với 2 tham số là tham số.
Tuyên bố một hàm tạo đánh bại mục đích của tôi, vì tôi muốn hàm tạo được định nghĩa trong các lớp con và tôi không biết gì về việc triển khai. Hơn nữa tôi không thể tuyên bố một nhà xây dựng như là trừu tượng;
Có cách nào để thực hiện việc này không?
Ví dụ về những gì tôi muốn:
Cho phép nói rằng tôi đang định API của một lớp Matrix. Trong vấn đề của tôi, Matrix không thể thay đổi kích thước của chúng.
Để tạo Ma trận, tôi cần cung cấp kích thước của nó.
Do đó, tôi muốn tất cả những người triển khai của tôi cung cấp hàm tạo với kích thước làm tham số. Nhà xây dựng này được thúc đẩy bởi vấn đề, không phải bởi một mối quan tâm thực hiện. Việc thực hiện có thể làm bất cứ điều gì nó muốn với những điều này, với điều kiện là tất cả ngữ nghĩa của các phương thức được giữ lại.
Giả sử tôi muốn cung cấp triển khai cơ bản phương pháp invert()
trong lớp trừu tượng của tôi. Phương pháp này sẽ tạo một ma trận mới với this
kích thước ngược. Cụ thể hơn, vì nó được định nghĩa trong lớp trừu tượng, nó sẽ tạo ra một cá thể mới của cùng một lớp là this
, sử dụng một hàm tạo có hai int. Vì nó không biết cá thể nó sẽ sử dụng sự phản chiếu (getDefinedConstructor) và tôi muốn một cách để bảo đảm rằng tôi sẽ nhận được nó và rằng nó sẽ có ý nghĩa cho việc thực hiện.
Một giải pháp thanh lịch có thể được tìm thấy tại đây: http://stackoverflow.com/questions/6028526/java-force-an-extending-class –