⊗ppOpIfCD 70 of 107 menu

Khai báo constructor trong interface trong OOP trong PHP

Trong interface cũng có thể khai báo constructor của lớp. Hãy xem qua ví dụ. Giả sử chúng ta quyết định tạo lớp Rectangle, trong đó sẽ có các phương thức để tìm diện tích, chu vi, đồng thời một constructor nhận hai tham số. Hãy mô tả lớp của chúng ta bằng interface:

<?php interface iRectangle { public function __construct($a, $b); // constructor với hai tham số public function getSquare(); public function getPerimeter(); } ?>

Hãy viết phần triển khai cho interface của chúng ta iRectangle:

<?php class Rectangle implements iRectangle { private $a; private $b; public function __construct($a, $b) { $this->a = $a; $this->b = $b; } public function getSquare() { return $this->a * $this->b; } public function getPerimeter() { return 2 * ($this->a + $this->b); } } ?>

Việc khai báo constructor trong interface đã mang lại cho chúng ta điều gì? Thứ nhất, chúng ta sẽ không quên triển khai constructor trong lớp. Thứ hai, interface chỉ rõ rằng constructor của lớp phải nhận hai tham số: không nhiều hơn, không ít hơn. Điều này cũng bảo vệ chúng ta khỏi những lỗi ngẫu nhiên.

Tại sao chúng ta lại tạo một interface riêng iRectangle, mà không thêm constructor vào interface Figure? Bởi vì tất cả các hình có số lượng cạnh khác nhau và, tương ứng, số lượng tham số trong constructor cũng khác nhau. Do đó, chúng ta buộc phải tạo một interface riêng biệt, chính xác hơn cho riêng hình chữ nhật.

Hãy tạo interface iCube, interface này sẽ mô tả hình Khối lập phương. Hãy để interface của bạn mô tả constructor, nhận cạnh của khối lập phương làm tham số, cũng như các phương thức để lấy thể tích khối lập phương và diện tích bề mặt.

Hãy tạo lớp Cube, triển khai interface iCube.

Hãy tạo interface iUser, interface này sẽ mô tả người dùng. Dự kiến rằng người dùng sẽ có tên và tuổi và các trường này sẽ được truyền qua tham số của constructor. Hãy để interface của bạn cũng quy định rằng người dùng sẽ có các getter (nhưng không phải setter) cho tên và tuổi.

Hãy tạo lớp User, triển khai interface iUser.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối