Để bắt đầu, Đa hình được lấy từ các từ Hy Lạp Poly (có nghĩa là nhiều) và morphism (có nghĩa là hình thành).
Tính đa hình mô tả một ví dụ trong lập trình hướng đối tượng trong đó các phương thức trong các lớp khác nhau thực hiện những việc tương tự phải có tên giống nhau. Đa hình về cơ bản là một mẫu OOP cho phép nhiều lớp với các chức năng khác nhau thực thi hoặc chia sẻ một Giao diện chung. Tính hữu ích của tính đa hình là mã được viết trong các lớp khác nhau không có bất kỳ tác dụng nào mà nó thuộc về lớp nào vì chúng được sử dụng theo cùng một cách. Để đảm bảo rằng các lớp thực hiện hướng dẫn đa hình, chúng ta có thể chọn giữa một trong hai lựa chọn thay thế của các lớp hoặc giao diện trừu tượng.
Vì vậy, hãy triển khai nguyên tắc đa hình với sự trợ giúp của giao diện.
Giao diện Một giao diện tương tự như một lớp ngoại trừ nó không thể chứa mã. Một giao diện có thể xác định tên phương thức và đối số, nhưng không xác định nội dung của phương thức. Bất kỳ lớp nào thực thi một giao diện phải thực thi tất cả các phương thức được đặc trưng bởi giao diện.
Ví dụ:
<?php interface Machine { public function calcTask(); } class Circle implements Machine { private $radius; public function __construct($radius){ $this -> radius = $radius; } public function calcTask(){ return $this -> radius * $this -> radius * pi(); } } class Rectangle implements Machine { private $width; private $height; public function __construct($width, $height){ $this -> width = $width; $this -> height = $height; } public function calcTask(){ return $this -> width * $this -> height; } } $mycirc = new Circle(3); $myrect = new Rectangle(3,4); echo $mycirc->calcTask(); echo $myrect->calcTask(); ?>
Đầu ra:
28.274 12
Giải thích:
Giao diện với tên "Máy" cam kết tất cả các lớp thực hiện nó để xác định một phương thức trừu tượng với tên là calcTask (). Theo đó, lớp Circle thực thi giao diện bằng cách xác định phương thức callTask () với phần thân tương ứng bên trong nó. Lớp hình chữ nhật cũng thực hiện giao diện Máy nhưng định nghĩa phương thức calcTask () với phần thân khác với phương thức CalTask () của lớp hình tròn. Hướng dẫn đa hình nói rằng, đối với tình huống này, tất cả các phương thức tính toán tác vụ sẽ có tên tương đương. Bây giờ, tại bất kỳ thời điểm nào chúng ta cần tính Nhiệm vụ cho các Lớp khác nhau, chúng ta sẽ gọi một phương thức với tên là calcTask () mà không cần xem xét nhiều đến chi tiết về cách thực sự tính Nhiệm vụ cho các Máy khác nhau. Điều chính mà chúng ta cần biết là tên của phương pháp tính toán Nhiệm vụ.