⊗ppOpIfSII 73 of 107 menu

Beberapa Antarmuka dalam OOP PHP

Di PHP tidak ada pewarisan berganda - setiap kelas hanya dapat memiliki satu induk. Namun, halnya berbeda dengan antarmuka: setiap kelas dapat mengimplementasikan berapa pun jumlah antarmuka. Untuk melakukannya, nama-nama antarmuka perlu didaftarkan dipisahkan dengan koma setelah kata kunci implements.

Ini menunjukkan satu lagi perbedaan antarmuka dari kelas abstrak - kita dapat mengimplementasikan banyak antarmuka, tetapi tidak dapat mewarisi beberapa kelas abstrak.

Mari kita coba dalam praktik. Misalkan selain antarmuka iFigure, kita juga memiliki antarmuka iTetragon. Metode dari antarmuka ini akan diimplementasikan oleh kelas Quadrate dan Rectangle, karena mereka memiliki 4 sisi, tetapi bukan kelas Disk.

Misalkan antarmuka iTetragon mendeskripsikan getter untuk keempat sisi segiempat:

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

Misalkan juga kita memiliki antarmuka iFigure, yang telah kita buat sebelumnya:

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

Mari kita buat agar kelas Quadrate mengimplementasikan dua antarmuka. Untuk itu, kita daftarkan kedua antarmuka dipisahkan dengan koma setelah kata kunci implements:

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

Sekarang mari kita sempurnakan kelas Quadrate kita, agar ia mengimplementasikan antarmuka iTetragon. Jelas bahwa persegi kita adalah kasus degenerasi dari segiempat, karena pada persegi semua sisinya sama. Oleh karena itu, semua metode baru akan mengembalikan hal yang sama - lebar persegi:

<?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 persegi panjang tidak semua sisi sama, hanya sisi yang berhadapan saja. Dalam hal ini, metode baru akan menjadi sedikit berbeda. Nah, dan dalam trapesium apa pun secara umum semua 4 sisinya akan berbeda.

Namun, tidak penting bentuk apa yang kita pertimbangkan - yang penting adalah bahwa semua bentuk ini akan memiliki metode yang dideskripsikan (meskipun beberapa bentuk adalah degenerasi) dan bekerja dengan cara yang seragam.

Buatlah agar kelas Rectangle juga mengimplementasikan dua antarmuka: yaitu iFigure, dan iTetragon.

Buatlah antarmuka iCircle dengan metode getRadius dan getDiameter.

Buatlah agar kelas Disk juga mengimplementasikan dua antarmuka: yaitu iFigure, dan iCircle.

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