Rumah > Artikel > pembangunan bahagian belakang > Kelas Abstrak dalam PHP
Seperti kelas abstrak, terdapat kaedah abstrak juga. Kami mengisytiharkan kedua-dua kaedah abstrak dan kelas abstrak dengan kata kunci abstrak. Dalam topik ini, kita akan belajar tentang kelas Abstrak dalam PHP.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Mengikut konsep pewarisan, kelas induk dilanjutkan oleh kelas terbitan. Kaedah dalam kelas induk dilaksanakan atau ditakrifkan oleh kelas terbitan. PHP memberi laluan kepada kelas induk menjadi lebih spesifik dengan menggunakan kaedah kelas abstrak dan abstrak.
Kelas abstrak wajib mengandungi satu kaedah sebagai abstrak. Selain itu, kelas abstrak ini juga boleh mempunyai kaedah bukan abstrak yang lain.
Sintaks
Sintaks Kelas Abstrak dengan satu kaedah sebagai abstrak.
abstract class DemoAbstractClass() { abstract public function DemoAbstractMethod(); }
Kaedah Abstrak
abstract public function DemoAbstractMethod();
Artikel ini akan mempelajari cara kerja kelas abstrak, dan ia berlaku seperti ini.
Sekarang, seperti yang kita tahu bahawa kelas abstrak wajib mempunyai satu kaedah sebagai abstrak.
Terdapat kaedah bukan abstrak juga. Kaedah abstrak hanya mempunyai pengisytiharan dalam kelas asas. Bermaksud bahawa ia hanya mempunyai nama dan parameter tanpa kod lain.
Untuk mentakrifkan kaedah dengan lebih lanjut dan berfungsi dengan kaedah, kaedah ini perlu dilaksanakan dalam kelas terbitan, yang memanjangkan kelas asas. Selain itu, ingat bahawa kelas abstrak ini tidak boleh digunakan untuk mencipta objek, tetapi kelas yang diperoleh daripada kelas asas boleh digunakan untuk mencipta objek.
Berikut ialah beberapa contoh kelas Abstrak dalam PHP yang diberikan di bawah
Dalam program di bawah, kita mengetahui perkara yang berlaku apabila objek kelas abstrak dicipta.
Kelas abstrak Pelajar dicipta mengandungi satu kaedah abstrak favouriteSubject() kaedah Kelas Pelajar dan dua kaedah bukan abstrak lain seperti setRollNo() dan getRollNO() yang menetapkan dan mendapat peranan pelajar, yang dilakukan dengan mencipta objek kelas terbitan (melanjutkan kelas asas).
Kod:
<?php abstract class Student { protected $m; public function setRollNo($rollno) { return $this->m = $rollno; } public function getRollNo() { return $this->m; } abstract public function favouriteSubject() } class Radha extends Student { public function favouriteSubject() { return "English"; } } $obj = new Student; //this statement throws error as we cannot create object of class Student as it is defined as abstract $obj = new Radha; //this statement does not throws error and executes correctly $obj->favouriteSubject(); ?>
Output :
Contoh ini diterangkan langkah demi langkah di bawah, selepas keluaran atur cara bersama-sama dengan kod daripada contoh ini.
Kod
abstract class Student{ protected $m; abstract public function calulatePercentage(); public function setMarks($marks) { return $this->m = $marks; } public function favoriteSubject() { return 'Favorite subject is English'; } } class Ram extends Student{ public function calulatePercentage(){ $percentage = ($this->m /100 ) * 100; return 'The percentage of Ram is '.$percentage. '%' .'<br>'; } } class Sherry extends Student{ public function calulatePercentage(){ $percentage = ($this->m /100 ) * 100; return 'The percentage of Sherry is '.$percentage. '%' .'<br>'; } public function favoriteSubject() { return 'Favorite subject is Maths'; } } $ram = new Ram(); $ram->setMarks(92); echo $ram->calulatePercentage(); echo $ram->favoriteSubject(); echo '<hr>'; $sherry = new Sherry(); $sherry->setMarks(97); echo $sherry->calulatePercentage(); echo $sherry->favoriteSubject();
Output :
Kelas abstrak boleh diistilahkan sebagai rangka untuk kelas terbitan. Dalam contoh di atas, kami mengisytiharkan kelas abstrak Pelajar dan sifat yang dipanggil $m untuk markah pelajar.
Penjelasan Contoh #2
abstract class Student { abstract public function calulatePercentage(); }
Kelas abstrak boleh diistilahkan sebagai rangka untuk kelas terbitan. Dalam contoh ini, kami mengisytiharkan kelas abstrak dan kaedah bersama kaedah lain.
Dalam contoh di atas, kami telah mengisytiharkan Pelajar kelas abstrak dengan kaedah abstrak untuk mengira peratusan pelajar, berserta markah yang diberikan.
Selain itu, kami telah mencipta kaedah (yang bukan abstrak) untuk menetapkan Markah pelajar dan untuk mendapatkan subjek kegemaran pelajar.
abstract class Student{ abstract public function calulatePercentage(); public function setMarks($marks) { return $this->m = $marks; } public function favoriteSubject() { return 'Favorite subject is English'; } }
Untuk mencipta objek pelajar kelas abstrak, kita perlu memanjangkan pelajar kelas dan mencipta kelas terbitan daripadanya. Kelas asas menggunakan kata kunci lanjutan untuk membolehkan kelas asas dilanjutkan. Setelah kelas dilanjutkan, kini kita boleh menggunakan kaedah kelas asas.
Dalam contoh di atas, Ram ialah kelas terbitan yang memanjangkan kelas asas Pelajar. Ia menggunakan kata kunci extends. Kini kami telah mengira kaedah peratusan() untuk mengira peratusan markah yang diperolehi oleh Ram.
class Ram extends Student{ public function calulatePercentage(){ $percentage = ($this->m /100 ) * 100; return 'The percentage of Ram is '.$percentage. '%' .'<br>'; } }
Mengisytiharkan satu lagi kelas yang memanjangkan kelas asas Pelajar untuk kita ketahui lebih lanjut.
Dalam contoh di atas, kami telah mencipta Sherry sebagai kelas terbitan yang dicipta daripada pelajar kelas asas. Ini menggunakan kata kunci lanjutan. Ia mempunyai dua fungsi: abstrak, kaedah calulatePercentage() dalam kelas asas, yang satu lagi ialah kaedah favoriteSubject(), yang bukan abstrak.
class Sherry extends Student{ public function calulatePercentage(){ $percentage = ($this->m /100 ) * 100; return 'The percentage of Sherry is '.$percentage. '%' .'<br>'; } public function favoriteSubject() { return 'Favorite subject is Maths'; } }
Sekarang kita mencipta objek kelas asas dan objek kelas terbitan, yang menimbulkan ralat. Kerana kita tidak boleh membuat instantiat, kelas diisytiharkan sebagai abstrak.
Oleh itu hanya objek kelas terbitan boleh dibuat. Setelah ini selesai, menggunakan objek ini, kami akan memanggil kaedah abstrak dan bukan kaedah abstrak, kedua-duanya seperti yang dilihat di bawah.
$ram = new Ram(); $ram->setMarks(92); echo $ram->calculatePercentage(); echo $ram->favoriteSubject(); echo '<hr>'; $sherry = new Sherry(); $sherry->setMarks(97); echo $sherry->calculatePercentage(); echo $sherry->favoriteSubject();
In this article, I hope you learned about how the abstract class is declared, how it works, how it is extended using extends keywords, how the abstract method is declared in the base class and how it is implemented in the derived class. The examples explained will help you learn the concept at ease. I hope it was prepared to be useful enough to grasp and practice more.
Atas ialah kandungan terperinci Kelas Abstrak dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!