Hướng dẫn polymorphism in php javatpoint - đa hình trong php javatpoint

Đa hình được lấy từ từ Hy Lạp poly (và điều đó ngụ ý nhiều) và hình thái (nó ngụ ý các cấu trúc quan trọng).

Đa hình là một trong bốn trụ cột mô tả một mô hình trong lập trình hướng đối tượng, còn được gọi là rất tiếc. Đó là một thiết kế OOP trao quyền cho các 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 đa hình là mã được viết trong các lớp khác nhau không có tác động đến lớp nào nó có một vị trí kể từ khi chúng được sử dụng tương tự. Có các kỹ thuật trong các lớp khác nhau làm cùng một điều nên có cùng tên. Để đảm bảo rằng các lớp thực hiện quy tắc đa hình, chúng ta có thể chọn giữa một trong hai lựa chọn của các lớp trừu tượng hoặc giao diện.

Lập trình hướng đối tượng:

  • Rất tiếc, còn được gọi là lập trình theo định hướng đối tượng, là các kỹ thuật lập trình được tổ chức được sử dụng để kết hợp các khối mã xung quanh thông tin và các mục thay vì logic và các chức năng.
  • Các đối tượng được tạo trong khi làm việc với ngôn ngữ lập trình hướng đối tượng là các trường thông tin với các nhãn hiệu và đặc điểm cụ thể.
  • Lập trình theo định hướng đối tượng chủ yếu tập trung xung quanh các đối tượng thông tin do kỹ sư tạo ra rằng họ cần kiểm soát để phát một bài tập cụ thể thay vì không tham gia vào cơ sở lý luận dự kiến ​​sẽ kiểm soát đối tượng.
  • Kiểu viết chương trình máy tính này đặc biệt khả thi cho các chương trình có độ phức tạp hoặc thông tin cực kỳ cao cần được làm mới thường xuyên hoặc theo kịp thường xuyên.
  • Một vài lợi ích khác nhau của OOPS kết hợp khả năng tái sử dụng mã, tính linh hoạt và hiệu quả.

Hướng dẫn cơ bản của OOP bao gồm:

  1. Đóng gói dữ liệu
  2. Trừu tượng dữ liệu
  3. Di sản
  4. Đa hình

Đa hình trong PHP

Thông thường, đa hình là hai loại

  • Biên dịch tính đa hình thời gian, còn được gọi là quá tải chức năng
  • Chạy đa hình thời gian, còn được gọi là chức năng ghi đè

Lưu ý: - PHP không hỗ trợ đa hình thời gian biên dịch, điều đó có nghĩa là chúng ta không thể sử dụng các thuộc tính đa hình như quá tải chức năng và quá tải của các toán tử, có thể rất hữu ích trong nhiều kịch bản. Hơn nữa trong bài viết này, toàn bộ các thuộc tính đa hình sẽ được dạy bằng cách sử dụng thuộc tính thời gian chạy của đa hình hoặc ghi đè chức năng.

Đa hình thời gian chạy

Đa hình thời gian chạy ngụ ý rằng một sự lựa chọn được thực hiện vào thời gian chạy (không phải tại thời điểm biên dịch), hoặc chúng ta có thể thực hiện các loại phụ khác nhau cho một lớp siêu. Quá tải chức năng là một minh họa của đa hình thời gian chạy.

Chức năng ghi đè - bất cứ khi nào, chúng tôi tạo một hàm trong một lớp xác định có dấu tương tự, tức là, tất cả, một hàm có tên tương tự, một số lượng đối số tương tự và một loại tham số tương tự Nó được gọi là quá tải chức năng. Whenever, we make a function in a determined class with a similar mark, i.e., all in all, a function has a similar name, a similar number of arguments, and a similar kind of parameters as a function in its parent class it is called function overloading.

Ví dụ: Việc sử dụng tính đa hình thời gian chạy

Output:

Hướng dẫn polymorphism in php javatpoint - đa hình trong php javatpoint

Chúng tôi đã tuyên bố một lớp cơ sở hoặc lớp cha new_shape () trong chương trình trên. Chúng tôi đã sử dụng thuộc tính thừa kế để kế thừa các thuộc tính từ lớp cha sang ba lớp con vòng tròn, tam giác và hình vuông. Mỗi lớp đã được cung cấp một bản vẽ chức năng để chỉ ra cách sử dụng tính đa hình thời gian chạy và như bạn có thể thấy, lớp cha chỉ giữ khai báo hàm rút, chứ không phải các thuộc tính của nó. Bây giờ để gọi các lớp, chúng tôi đã tạo ra một mảng độ dài 2 được gọi là Val.new_shape ( ) in the above program. We have used inheritance property to inherit the properties from the parent class to three child classes circle, Triangle, and Square. Each class has been provided a function draw to show how to use run time polymorphism, and as you can see, the parent class only holds the declaration of the function draw, not its properties. Now to call the classes, we have created an array of length 2 called val.

Chỉ mục mảng được sử dụng để gọi từng đối tượng của mỗi lớp. Và để chạy mảng, chúng tôi đã sử dụng một vòng lặp để thực hiện mảng theo chiều dài của mảng được khai báo. Chỉ số mảng sẽ sử dụng $ i để đếm cho đến khi độ dài của mảng và mỗi lần mảng lặp lại, giá trị của I sẽ được tăng lên. Một lớp mới ở vị trí mảng cụ thể đó sẽ được gọi và chương trình sẽ tự động tự thực hiện.

Các loại đa hình PHP

PHP có thể sử dụng phương pháp đa hình theo 2 cách phân biệt. Đa hình trong PHP sử dụng các giao diện được cung cấp sẵn trong các lớp PHP và trừu tượng để thực hiện các phương pháp đa hình.

Các lớp và giao diện trừu tượng là đặc điểm đặc biệt của các ngôn ngữ lập trình được kế thừa duy nhất như PHP, trong đó không thể kế thừa. Nó giúp nhà phát triển giảm các hạn chế của tài sản thừa kế duy nhất của PHP và giúp tái sử dụng mã tự do trong các lớp khác nhau trình bày các cấp độ khác nhau trong một hệ thống phân cấp. Chúng gần như giống với một lớp, nhưng không giống như các lớp, chúng luôn nhóm chức năng. Không thể tự mình khởi tạo một giao diện đó là lý do tại sao cần sử dụng nó với lớp. Chúng ta có thể nói rằng đây là những loại lớp giúp nhà phát triển có nhiều kế thừa và đa hình bằng cách sử dụng nhiều chức năng cùng một lúc

Đa hình sử dụng giao diện

Giao diện - Giao diện gần giống như một lớp. Bên cạnh đó, nó không thể chứa mã. Giao diện có thể khai báo đối số và tên phương thức, nhưng chỉ có nó mới có thể khai báo chúng. Nó không thể thêm nội dung của các phương pháp đó. Bất kỳ lớp nào sẽ thực hiện giao diện nên thực hiện tất cả các kỹ thuật được mô tả bởi giao diện. - Interface is almost like a class. Aside from that, it can't contain code. The Interface can declare arguments and the method name, but only it can declare them. It cannot add the contents of those methods. Any classes that will be going to execute Interface should execute all techniques described by the Interface.

Syntax:

Ví dụ về đa hình sử dụng giao diện

Output:

Hướng dẫn polymorphism in php javatpoint - đa hình trong php javatpoint

Trong chương trình trên, chúng tôi đã khai báo một giao diện hoặc khu vực lớp cha (). Chúng tôi đã sử dụng thuộc tính giao diện để kế thừa các thuộc tính từ lớp cha sang hai lớp con, vòng tròn và hình chữ nhật. Mỗi lớp đã được cung cấp một hàm calcarea () để chỉ ra cách sử dụng đa hình thời gian chạy bằng phương pháp giao diện. Như bạn có thể thấy, lớp cha chỉ giữ khai báo hàm, không phải thuộc tính của nó.area ( ). We have used interface property to inherit the properties from the parent class to two child classes, Circle and rectangle. Each class has been provided a function Calcarea ( ) to show how to use run time polymorphism using the interface method. As you can see, the parent class only holds the declaration of the function, not its properties.

Như quy tắc đa hình nói, mỗi một trong các chiến lược tính toán quá trình sẽ có cùng tên cho hoàn cảnh hiện tại này. Hiện tại, bất cứ khi nào chúng tôi phải tìm ra nhiệm vụ cho các lớp khác nhau, chúng tôi sẽ gọi một hàm với tên của calctask () mà không đưa ra một tấn suy nghĩ cho sự tinh tế của cách tính toán nhiệm vụ cho các chức năng khác nhau. Điều trung tâm mà chúng ta sẽ phải biết là tên của hàm tính toán nhiệm vụ.

Đa hình sử dụng các lớp trừu tượng

Các lớp học và kỹ thuật trừu tượng là những điểm mà lớp phụ huynh có một chiến lược được đặt tên nhưng cần lớp học trẻ em của nó để hoàn thành các chủ trương. Nó là một lớp chứa không dưới một phương pháp trừu tượng và là một kỹ thuật chỉ được khai báo, tuy nhiên, không được thực hiện trong mã.

Khóa trừu tượng thường đặc trưng cho một lớp trừu tượng:

Mặc dù kế thừa từ một lớp trừu tượng, lớp trẻ phải được đặc trưng với một tên tương tự và tương đương với một công cụ sửa đổi / điều chỉnh truy cập ít hạn chế hơn. Theo cách này, nếu lớp trừu tượng được đặc trưng là được bảo vệ, lớp trẻ nên được đặc trưng là được bảo vệ hoặc công khai. Như chúng ta đã biết, nó không bao giờ có thể kế thừa các chức năng riêng tư bằng bất kỳ phương tiện nào có thể. Tương tự như vậy, loại và số lượng biến hoặc khai báo phải tương tự nhau. Như có thể, các lớp con có thể có nhiều biến hoặc hàm được khai báo hơn.

Nhưng trong khi kế thừa từ một lớp trừu tượng, nó nên tuân theo các nguyên tắc này.

  • Đứa trẻ hoặc lớp kế thừa phải được đặc trưng với một tên tương tự và nó tuyên bố phương thức trừu tượng có nguồn gốc từ lớp cha.
  • Lớp trẻ phải được đặc trưng với một cái gì đó tương tự hoặc một công cụ sửa đổi truy cập ít hơn.
  • Số lượng các biến được khai báo phải là một cái gì đó tương tự. Như có thể, các lớp con có thể có nhiều biến hoặc hàm được khai báo hơn.

Syntax:

Example:

Output:

Hướng dẫn polymorphism in php javatpoint - đa hình trong php javatpoint

Trong chương trình trên, chúng tôi đã tuyên bố một lớp trừu tượng, ngôn ngữ và lớp trừu tượng này chứa một phương thức trừu tượng hoặc hàm trừu tượng gọi là chào (). Chúng tôi đã sử dụng thuộc tính này để kế thừa các thuộc tính từ lớp mẹ sang ba lớp tiếng Anh, tiếng Tây Ban Nha và Pháp và mỗi lớp con sẽ trả về một đầu ra khác nhau. Sau đó, chúng tôi đã tuyên bố một chức năng lời chào () sẽ chấp nhận đầu vào dưới dạng một mảng và sẽ tự động gọi hàm chào .. Để truy xuất đầu ra, chúng tôi đã tuyên bố một mảng các đối tượng của tất cả các lớp con tiếng Anh, tiếng Tây Ban Nha và tiếng Pháp (tới Gọi một lớp hoặc để truy xuất đầu ra từ một lớp, chúng tôi phải tạo một đối tượng của lớp cụ thể đó) và chuyển đối tượng để thoát khỏi chức năng chào hỏi như chu vi.Language, and this abstract class contains an abstract method or abstract function called greet ( ). We have used the property to inherit the properties from the parent class to three English, Spanish and French classes, and each child class will return a different output. Later we have declared a function greeting ( ) that will accept input as an array and will automatically call the greet function.. further to retrieve the output, we have declared an array of objects of all the child classes English, Spanish and French ( to call a class or to retrieve an output from a class we have to create an object of that particular class) and passed the object to out greeting function as the perimeter.