Hãy nói rằng tôi có một giao diện 'của Inter, và Inter có một phương phápLàm cách nào để chỉ định kiểu trả về của một phương thức loại đối tượng mà phương thức được gọi?
Inter someMethod();
Làm thế nào tôi có thể xác định rằng các loại của đối tượng trở lại phải được giống như các đối tượng trên đó phương pháp này được gọi là? Vì vậy, nếu tôi có hai lớp 'C1' và 'C2' thực hiện Inter, nếu một thể hiện của C1 gọi someMethod (c1.someMethod()
) kết quả sẽ là một thể hiện của C1, trong khi nếu một thể hiện của C2 gọi someMethod kết quả sẽ là một ví dụ C2.
Làm thế nào về thông số? Nếu Inter có phương thức thứ hai
void someMethod2(Inter inter)
Làm cách nào để xác định tham số phải là một thể hiện của cùng một lớp với đối tượng gọi phương thức?
Điều này thực hiện thủ thuật. Một điều mặc dù: "lớp công khai C1 triển khai Inter" Tôi có thể buộc ở đây rằng "C1" không thể triển khai một Inter khác với Inter ? –
user2460978
Đó là do thiết kế. Bạn sẽ nhận được một lỗi trình biên dịch nếu bạn thử: C1 cài đặt Inter, Inter Nhưng, nếu bạn muốn ngăn chặn: C1 triển khai Inter Tôi không nghĩ là có thể. –
Tôi có nghĩa là bạn sẽ nhận được một lỗi biên dịch nếu bạn đã thử "C1 thực hiện Inter", hoặc, nói chung, "X thực hiện Inter ".Bởi vì, với cách tiếp cận này, bản thân giao diện không buộc rằng kiểu trả về của someMethod() phải giống như kiểu của đối tượng gọi phương thức. –
user2460978