tôi đã viết các đoạn mã sau:Polymorphism không hoạt động trong đối số phương pháp trong Java
class Plane {}
class Airbus extends Plane {}
public class Main {
void fly(Plane p) {
System.out.println("I'm in a plane");
}
void fly(Airbus a) {
System.out.println("I'm in the best Airbus!");
}
public static void main(String[] args) {
Main m = new Main();
Plane plane = new Plane();
m.fly(plane);
Airbus airbus = new Airbus();
m.fly(airbus);
Plane planeAirbus = new Airbus();
m.fly(planeAirbus);
}
}
Và kết quả là:
I'm in a plane
I'm in the best Airbus!
I'm in a plane
gì đáng ngạc nhiên cả hai lời gọi đầu tiên cung cấp cho I'm in a plane
và I'm in the best Airbus!
tương ứng .
Plane planeAirbus = new Airbus();
Phương pháp xử lý đối tượng này làm Máy bay, mặc dù đối tượng thực là Airbus. Ngay cả khi tôi thêm abstract
-class Plane
, có gì thay đổi và kết quả của sự thỉnh nguyện cuối cùng vẫn I'm in a plane
Vì vậy, câu hỏi là tại sao đa hình không hoạt động trong đối số phương pháp và lời gọi là? Có mục đích gì không? Làm thế nào nó hoạt động?
Là tên khác cho động ràng buộc một công văn đôi hay có những khái niệm khác nhau? –
Tôi nghĩ rằng công văn đôi là khác nhau, nhưng công văn đôi thường cũng thực hiện ràng buộc năng động, vì vậy chúng thường được nhìn thấy cùng nhau. – markspace
Công văn đôi có thể được thực hiện trong Java bằng cách sử dụng mẫu Khách truy cập, cần thiết vì Java là một ngôn ngữ được nhập tĩnh. – Timmos