Methods Overriding trong java có các tính năng sau:Overriding phương pháp hạn chế trong java
1> Phương pháp Overrinding nên có danh sách đối số tương tự như phương pháp lớp phụ huynh.
2> Kiểu trả về phải giống nhau/phân lớp của kiểu trả về cho phương thức lớp cha.
3> Cấp truy cập phải giống hoặc ít hạn chế như phương pháp lớp cha mẹ.
4> Phương pháp ghi đè có thể ném cùng một ngoại lệ hoặc hẹp hơn và không phải là một ngoại lệ rộng hơn.
* Chỉ cần muốn biết tại sao nó lại như vậy cho điểm *
* 2 - tại sao lớp con tại sao không phải là một lớp cha? *
3 - lý do mức truy cập nên ít hạn chế hơn?
4 - tại sao nó nên ném ngoại lệ hẹp?
Theo sự hiểu biết của tôi nó chỉ là nếu tôi đang tạo ra một refrence tầng lớp phụ huynh để tạo ra một đối tượng lớp trẻ và cố gắng chạy xuống mỗi kịch bản sau đó
Cho phép giả định A là lớp cha và B là lớp con cả có phương pháp printAndReturnSomething()
public class A{
public B printAndReturnSomething(){
S.O.P("Inside A Print");
return new B();
}
}
Bây giờ chúng tôi có các lớp con B như
public class B extends A{
public A printAndReturnSomething(){ // I know this isn't possible to return A but had it been then
S.O.P("Inside A Print");
return new A();
}
}
Bây giờ nếu tôi làm điều gì đó như thế này
A a =new B();
và bây giờ như tôi có một tham chiếu của A vì vậy tôi hy vọng các kiểu trả về là kiểu B
B returnedValue=a.printAndReturnSomething(); // But it actually calls the child class method and hence returns A. So here comes the contradiction.
Similaraly cho kịch bản 3 và 4. Sự hiểu biết của tôi có đúng không? Tôi có thiếu cái gì khác có liên quan hơn không?
Cảm ơn bạn đã ans và đặc biệt là dòng cuối cùng "Luôn nghĩ về thừa kế là" hoạt động như lớp siêu ", hoặc" có thể được đối xử như siêu lớp ", và tất cả điều này phải rõ ràng." – Deva