Tính đa hình là khả năng của một đối tượng có nhiều dạng. Việc sử dụng đa hình phổ biến nhất trong OOP xảy ra khi một tham chiếu lớp cha được sử dụng để tham chiếu đến một đối tượng lớp con.
Bất kỳ đối tượng Java nào có thể vượt qua nhiều hơn một bài kiểm tra IS-A đều được coi là đa hình. Trong Java, tất cả các đối tượng Java đều là đa hình vì bất kỳ đối tượng nào cũng sẽ vượt qua bài kiểm tra IS-A cho kiểu riêng của chúng và cho đối tượng lớp.
Điều quan trọng cần biết là cách duy nhất có thể để truy cập một đối tượng là thông qua một biến tham chiếu. Một biến tham chiếu có thể chỉ có một kiểu. Sau khi được khai báo, không thể thay đổi loại biến tham chiếu.
Biến tham chiếu có thể được gán lại cho các đối tượng khác với điều kiện là biến đó không được khai báo cuối cùng. Loại của biến tham chiếu sẽ xác định các phương thức mà nó có thể gọi trên đối tượng.
Một biến tham chiếu có thể tham chiếu đến bất kỳ đối tượng nào thuộc kiểu được khai báo của nó hoặc bất kỳ kiểu con nào của kiểu được khai báo. Một biến tham chiếu có thể được khai báo dưới dạng lớp hoặc kiểu giao diện.
Ví dụ
Hãy để chúng tôi xem xét một ví dụ.
public interface Vegetarian{} public class Animal{} public class Deer extends Animal implements Vegetarian{}
Bây giờ, lớp Deer được coi là đa hình vì lớp này có nhiều kế thừa. Sau đây là đúng cho các ví dụ trên -
- Một con hươu là một con vật
- Một con nai LÀ một người ăn chay
- A Deer IS-A Deer
- Một Deer IS-A Object
Khi chúng tôi áp dụng các dữ kiện về biến tham chiếu cho tham chiếu đối tượng Deer, các khai báo sau là hợp pháp -
Ví dụ
Deer d = new Deer(); Animal a = d; Vegetarian v = d; Object o = d;
Tất cả các biến tham chiếu d, a, v, o đều tham chiếu đến cùng một đối tượng Deer trong heap.