⊗ppOpIfSII 73 of 107 menu

Pelbagai Antara Muka dalam OOP PHP

PHP tidak mempunyai pewarisan berbilang - setiap kelas hanya boleh mempunyai satu induk. Walau bagaimanapun, keadaan berbeza dengan antara muka: setiap kelas boleh melaksanakan sebarang bilangan antara muka. Untuk melakukan ini, nama antara muka perlu disenaraikan dipisahkan dengan koma selepas kata kunci implements.

Ini menunjukkan satu lagi perbezaan antara muka dari kelas abstrak - anda boleh melaksanakan banyak antara muka, tetapi mewarisi beberapa kelas abstrak adalah tidak boleh.

Mari kita cuba secara praktikal. Katakan selain antara muka iFigure, kita juga mempunyai antara muka iTetragon. Kaedah antara muka ini akan dilaksanakan oleh kelas Quadrate dan Rectangle, kerana mereka mempunyai 4 sisi, tetapi bukan kelas Disk.

Katakan antara muka iTetragon menerangkan pengambil (getter) untuk semua empat sisi segi empat:

<?php interface iTetragon { public function getA(); public function getB(); public function getC(); public function getD(); } ?>

Katakan juga kita mempunyai antara muka iFigure, yang telah kita buat sebelum ini:

<?php interface iFigure { public function getSquare(); public function getPerimeter(); } ?>

Mari kita buat agar kelas Quadrate melaksanakan dua antara muka. Untuk ini, senaraikan kedua-dua antara muka dipisahkan dengan koma selepas kata kunci implements:

<?php class Quadrate implements iFigure, iTetragon { // di sini akan ada pelaksanaan } ?>

Sekarang mari kita selesaikan kelas Quadrate kami, agar ia melaksanakan antara muka iTetragon. Jelas bahwa segi empat sama kami adalah kes menyusut segi empat, kerana segi empat sama semua sisinya adalah sama. Oleh itu, semua kaedah baru akan mengembalikan perkara yang sama - lebar segi empat sama:

<?php class Quadrate implements iFigure, iTetragon { private $a; public function __construct($a) { $this->a = $a; } public function getA() { return $this->a; } public function getB() { return $this->a; } public function getC() { return $this->a; } public function getD() { return $this->a; } public function getSquare() { return $this->a * $this->a; } public function getPerimeter() { return 4 * $this->a; } } ?>

Jelas bahwa dalam segi empat tepat, tidak semua sisi adalah sama, hanya sisi bertentangan. Dalam kes ini, kaedah baru akan menjadi sedikit berbeza. Dan, dalam mana-mana trapezium secara umumnya semua 4 sisi akan berbeza.

Walau bagaimanapun, tidak kira apa bentuk yang akan kita pertimbangkan - yang penting adalah semua bentuk ini akan mempunyai kaedah yang diterangkan (walaupun beberapa bentuk adalah menyusut) dan berfungsi dengan cara yang seragam.

Buat agar kelas Rectangle juga melaksanakan dua antara muka: kedua-dua iFigure, dan iTetragon.

Buat antara muka iCircle dengan kaedah getRadius dan getDiameter.

Buat agar kelas Disk juga melaksanakan dua antara muka: kedua-dua iFigure, dan iCircle.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak