Beth yw Etifeddiaeth?
Pan fydd dosbarth yn deillio o ddosbarth arall, fe'i gelwir yn etifeddiaeth. Dyma rai termau pwysig yn ymwneud ag etifeddiaeth yn PHP.
- Dosbarth Rhieni – Gelwir y dosbarth y mae'r dosbarthiadau eraill yn deillio ohono yn ddosbarth rhiant. Fe'i gelwir hefyd yn ddosbarth sylfaen.
- Dosbarth Plentyn – Gelwir y dosbarth sy'n deillio o ddosbarth arall yn ddosbarth plentyn. Mae yna rai enwau eraill ar ei gyfer hefyd fel dosbarth dail neu ddosbarth deilliadol.

Sut i etifeddu dosbarth yn PHP?
Gellir etifeddu dosbarth trwy ddefnyddio yn ymestyn allweddair. Edrychwch ar yr enghraifft ganlynol.
<?php
class Fruit {
public $name;
public $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
public function intro() {
echo "The fruit is {$this->name} and the color is {$this->color}.";
}
}
// Apple is inherited from Fruit
class Apple extends Fruit {
public function message() {
echo "I am from Fruit class or Apple one? ";
}
}
$apple= new Apple("Apple", "red");
$apple->message();
$apple->intro();
?>
Yn yr enghraifft uchod
- Rydym yn creu sylfaen neu ddosbarth rhiant Ffrwythau gyda rhai priodweddau a dulliau.
- Rydyn ni'n creu afal dosbarth arall sy'n ymestyn / etifeddu'r dosbarth rhiant Ffrwythau gan ddefnyddio allweddair extends.
- Crëwch enghraifft/gwrthrych afal a chyrchwch y dull dosbarth ffrwythau gan ddefnyddio'r etifeddiaeth.
Wrth gloi'r cyflwyniad i etifeddiaeth yn PHP, rydym yn casglu'r pwyntiau canlynol i chi.
- Mae etifeddiaeth yn caniatáu i'r dosbarth plentyn gael mynediad i'r cyhoedd __adeilad, dulliau a phriodweddau'r dosbarth rhiant.
- Yn yr enghraifft uchod, gallwn gael mynediad at y dull o ddosbarth afal gan ddefnyddio ei wrthrych, yn ogystal â dulliau dosbarth rhiant.
Cwmpas addaswyr mynediad gwarchodedig mewn Etifeddiaeth
Yn y tiwtorial blaenorol, fe wnaethom ddysgu bod priodoleddau / dulliau gwarchodedig dosbarth yn hygyrch o fewn y dosbarth a'r dosbarthiadau sy'n deillio ohono.
Er mwyn deall cwmpas addaswyr mynediad gwarchodedig mewn etifeddiaeth, gadewch i ni edrych ar yr enghraifft ganlynol yn gyntaf.
<?php
class Fruit {
public $name;
public $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
protected function intro() {
echo "I am $this->name and my color is $this->color";
}
}
class Apple extends Fruit {
public function message() {
echo "I am from Fruit class or Apple one?";
}
}
$apple = new Apple("Apple", "red");
$apple->message();
$apple->intro();
?>
Yn yr enghraifft uchod:
- Rydym yn creu ffrwyth dosbarth gyda rhai priodoleddau cyhoeddus a dull gwarchodedig.
- Rydyn ni'n creu afal dosbarth arall, yn ymestyn o ddosbarth Ffrwythau ac yn creu ei esiampl.
- Pan geisiwn gael mynediad at ddull gwarchodedig y dosbarth Ffrwythau gan ddefnyddio gwrthrych dosbarth afal, mae'n rhoi gwall oherwydd, rydym yn ceisio cael mynediad i aelod gwarchodedig o ddosbarth Ffrwythau y tu allan i'r dosbarth deilliadol.
Gadewch i ni symud at enghraifft arall, sydd mewn gwirionedd wedi'i haddasu ychydig o'r enghraifft uchod.
<?php
class Fruit {
public $name;
public $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
protected function intro() {
echo "I am {$this->name} and my color is {$this->color}.";
}
}
class Apple extends Fruit {
public function message() {
echo "Am I a fruit or an apple? ";
$this -> intro(); // protected
}
}
$apple = new Apple("Apple", "red");
$strawberry->message();
?>
Yn yr enghraifft uchod, mae dull gwarchodedig y dosbarth Ffrwythau yn hygyrch yn y dosbarth afalau oherwydd ein bod yn ei gyrchu o fewn y dosbarth.
Gor- phwys mewn Etifeddiaeth
Gor-redol yn cyfeirio at ailddiffinio dulliau'r dosbarth rhiant yn y dosbarthiadau plentyn, gan ddefnyddio'r un enw. Edrychwch ar yr enghraifft ganlynol o or-redeg mewn etifeddiaeth isod.
<?php
class Fruit {
public $name;
public $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
public function intro() {
echo "I am {$this->name} and my color is {$this->color}.";
}
}
class Apple extends Fruit {
public $weight;
public function __construct($name, $color, $weight) {
$this->name = $name;
$this->color = $color;
$this->weight = $weight;
}
public function intro() {
echo "I am {$this->name}, my color is {$this->color}. Also, my weight is {$this->weight} kg.";
}
}
$apple= new Apple("Apple", "red", 50);
$apple->intro();
?>
Yn yr enghraifft uchod:
- Rydyn ni'n creu dosbarth rhiant Ffrwythau ac afal dosbarth plentyn sy'n ymestyn y dosbarth Ffrwythau ac yn ailddiffinio'r dulliau __constructt a intro ynddo.
- Sylwch fod yr afal dosbarth plentyn yn diffinio'r dulliau __construct a intro gyda'r un enw. Fodd bynnag, gall paramedrau fod yn wahanol.
- Rydym yn creu intance dosbarth afal ac yn trosglwyddo'r paramedrau i'r swyddogaeth adeiladu.
- Pan fyddwn yn galw'r dull intro gan ddefnyddio enghraifft afal, mae'n galw dull intro y dosbarth afal oherwydd ein bod wedi creu enghraifft y gwrthrych afal gan ddefnyddio adeiladwr dosbarth afal.
Rôl y Gair Allweddol Terfynol mewn etifeddiaeth
Mae terfynol allweddair yn atal y plentyn/dosbarth deilliedig rhag diystyru dull y rhiant/dosbarth sylfaen. Edrychwch ar yr enghraifft ganlynol i ddeall y defnydd o'r allweddair Terfynol.
<?php
class Fruit {
final public function intro() {
// code
}
}
class Apple extends Fruit {
// error to override the intro
public function intro() {
// code
}
}
?>
Yn yr enghraifft uchod, mae'r dosbarth afal yn ceisio diystyru'r dull intro. Bydd yn rhoi gwall oherwydd ein bod wedi defnyddio'r allweddair terfynol gyda dull intro y dosbarth Ffrwythau.
Cliciwch am swyddog cyfeiriad at yr etifeddiaeth PHP.
Casgliadau
Mae etifeddiaeth nid yn unig yn gysyniad pwysig o OOP yn PHP, ond mewn unrhyw iaith, mae'n chwarae rhan hanfodol. O safbwynt y cyfweliad, mae cwestiynau etifeddiaeth yn bwysig iawn. Felly, rhaid i chi ymarfer yr etifeddiaeth ar eich pen eich hun.