Mọi người cho mình hỏi là : Mình có 1 abtract class là lớp cha và khai báo các phương thức abstract trong class đó . Sau đó mình dùng 1 class khác kế thừa class abstract cha. Sau đó mình nạp chồng phương thức trong class con đó liệu có đúng không ? **Tại sao khi mình chạy chương trình nó toàn báo lỗi :
Fatal error: Declaration of SachBaiTap::Khoitao($ts, $nxb, $gb, $slph, $stp) must be compatible with Sach::Khoitao($ts, $nxb, $gb, $slph) in C:\xampp\htdocs\OOP_PHP\OOP_E73508.php on line 68**
Ví dụ
<?php
abstract class Sach{
public $tensach;
public $namxuatban;
public $giabia;
public $soluongphathanh;
abstract public function Khoitao($ts,$nxb,$gb,$slph);
abstract public function Tinhnhuanbut();
abstract public function Inthongtin();
}
class SachGiaoKhoa extends Sach{
public function Khoitao($ts,$nxb,$gb,$slph){
$this->tensach = $ts;
$this->namxuatban = $nxb;
$this->giabia = $gb;
$this->soluongphathanh = $slph;
}
public function Tinhnhuanbut(){
$tiennhuanbut = 0;
if($this->soluongphathanh > 2000){
$tiennhuanbut = 0.06 * $this->giabia * $this->soluongphathanh;
}
else{
$tiennhuanbut = 0.08 * $this->giabia * $this->soluongphathanh;
}
return $tiennhuanbut;
}
public function Inthongtin(){
//echo Tinhnhuanbut("1500,500");
echo $this->Tinhnhuanbut();
}
}
class SachBaiTap extends Sach{
public $soTap;
public function Khoitao($ts,$nxb,$gb,$slph,$stp){
$this->tensach = $ts;
$this->namxuatban = $nxb;
$this->giabia = $gb;
$this->soluongphathanh = $slph;
$this->soTap = $stp;
}
public function Tinhnhuanbut(){
$tiennhuanbut = 0;
if($this->soTap == 1){
$tiennhuanbut = 0.05 * $this->giabia * $this->soluongphathanh;
}
else if($this->soTap == 2){
$tiennhuanbut = 0.06 * $this->giabia * $this->soluongphathanh;
}
else {
$tiennhuanbut = 0.08 * $this->giabia * $this->soluongphathanh;
}
return $tiennhuanbut;
}
public function Inthongtin(){
echo $this->Tinhnhuanbut();
}
}
class SachThamKhao extends Sach{
public $soTrang;
public function Khoitao($ts,$nxb,$gb,$slph,$st){
$this->tensach = $ts;
$this->namxuatban = $nxb;
$this->giabia = $gb;
$this->soluongphathanh = $slph;
$this->soTrang = $st;
}
public function Tinhnhuanbut(){
$tiennhuanbut = 0;
if($this->soTrang >=500 && $this->soluongphathanh > 2000){
$tiennhuanbut = 0.08 * $this->giabia * $this->soluongphathanh;
}
else{
$tiennhuanbut = 0.06 * $this->giabia * $this->soluongphathanh;
}
return $tiennhuanbut;
}
public function Inthongtin(){
echo $this->Tinhnhuanbut();
}
}
$Toan = new SachGiaoKhoa();
$Toan->Khoitao("Toan","KimDong",500,1200);
$Toan->Inthongtin();
$BT_Toan = new SachBaiTap();
$BT_Toan->Inthongtin();
$GiaiBT = new SachThamKhao();
$GiaiBT->Inthongtin();
?>