Dè th' ann an Oighreachd?
Nuair a thig clas bho chlas eile, canar oighreachd ris. Seo cuid de theirmean cudromach co-cheangailte ri dìleab ann am PHP.
- Clas phàrant - Canar clas pàrant ris a’ chlas às a bheil na clasaichean eile a’ tighinn. Canar clas bunaiteach ris cuideachd.
- Clas Chloinne – Canar clas cloinne ris a’ chlas a thig bho chlas eile. Tha ainmean eile air a shon cuideachd leithid clas dhuilleagan no clas a thàinig às.
Ciamar a shealbhaicheas tu clas ann am PHP?
Faodar clas a shealbhachadh le bhith a’ cleachdadh an a ’leudachadh prìomh-fhacal. Thoir sùil air an eisimpleir a leanas.
<?php
class Fruit {
protected $name;
protected $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
public function getName() {
return $this->name;
}
public function getColor() {
return $this->color;
}
}
class Apple extends Fruit {
protected $variety;
public function __construct($name, $color, $variety) {
parent::__construct($name, $color);
$this->variety = $variety;
}
public function getVariety() {
return $this->variety;
}
}
$apple = new Apple('Apple', 'Red', 'Fuji');
echo $apple->getName(); // Output: Apple
echo $apple->getColor(); // Output: Red
echo $apple->getVariety(); // Output: Fuji
?>
Anns an eisimpleir seo, an clas Apple a ’leudachadh an clas Fruit, a tha a’ ciallachadh gu bheil na feartan agus na dòighean-obrach aig clas Fruit a bharrachd air a’ chlas Apple. Bidh an neach-togail clas Apple a’ cleachdadh a’ ghnìomh pàrant :: construct() gus fios a chuir chun neach-togail phàrant, a’ toirt seachad na crìochan iomchaidh. An uairsin, a’ cleachdadh dìleab, faodaidh tu eisimpleir den chlas Apple a chruthachadh agus faighinn chun ghnìomh bhon chlas phàrant.
Gus geàrr-chunntas a dhèanamh air na tha gu h-àrd:
- Tha oighreachd a’ leigeil le clas an leanaibh cothrom fhaighinn air a’ phoball __construct, dòighean agus feartan a’ chlas phàrant.
- Anns an eisimpleir gu h-àrd, faodaidh sinn cothrom fhaighinn air an dòigh apple clas a 'cleachdadh a nì, a thuilleadh air dòighean clas pàrant.
Farsaingeachd luchd-atharrachaidh ruigsinneachd dìonta ann an Oighreachd
Anns an oideachadh mu dheireadh, dh’ ionnsaich sinn gu bheil buadhan/modhan dìonta de chlas rim faighinn taobh a-staigh a’ chlas agus na clasaichean a thàinig bhuaithe.
Gus tuigse fhaighinn air farsaingeachd luchd-atharrachaidh ruigsinneachd dìon ann an dìleab, leig dhuinn sùil a thoirt air an eisimpleir a leanas.
<?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();
?>
Anns an eisimpleir gu h-àrd:
- Bidh sinn a’ dèanamh clas ris an canar measan aig a bheil feartan poblach sònraichte agus gnìomh dìonta.
- Bidh sinn a’ togail clas eile, ubhal, a tha a’ leudachadh bho Fruit agus aig a bheil eisimpleir fhèin.
- Nuair a dh’ fheuchas sinn ri faighinn gu modh dìon a’ chlas mheasan le bhith a’ cleachdadh nì clas ubhal, tha e a’ toirt mearachd oir, tha sinn a’ feuchainn ri faighinn gu ball dìon de chlas measan taobh a-muigh a’ chlas toraidh.
Bheir sinn sùil air eisimpleir eile, a tha gu ìre mhòr na dhreach beag atharraichte den fhear mu dheireadh.
<?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();
?>
Leis gu bheil sinn a 'faighinn cothrom air taobh a-staigh a' chlas anns an eisimpleir roimhe, tha an dòigh dìon den chlas Fruit ri fhaighinn anns a 'chlas ubhal.
A' cur thairis ann an oighreachd
Tha toirt thairis a’ ciallachadh ath-mhìneachadh a dhèanamh air dòighean clas pàrant anns na clasaichean cloinne leis an aon ainm. Beachdaich air an t-eisimpleir a leanas de dh'oighreachd.
<?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();
?>
Anns an eisimpleir gu h-àrd:
- Tha tar-chur a’ ciallachadh a bhith ag ath-ainmeachadh dhòighean a’ chlas phàrant anns na clasaichean cloinne. Beachdaich air an eisimpleir a leanas de bhith a 'toirt thairis air oighreachd.
- Is fhiach a bhith mothachail gu bheil an aon ainm aig na dòighean __construct agus intro ann an clas cloinne ubhal. Ach, faodaidh na paramadairean a bhith eadar-dhealaichte.
- Cruthaichidh sinn eisimpleir den chlas ubhal agus cuiridh sinn na h-argamaidean chun dòigh togail.
- Leis gun do chruthaich sinn an t-eisimpleir nì ubhal a’ cleachdadh an inneal-togail clas ubhal, nuair a chanas sinn ris an dòigh intro a’ cleachdadh eisimpleir ubhal, canaidh e gnìomh intro clas ubhal.
Dreuchd a’ phrìomh fhacal deireannach ann an dìleab
Tha am prìomh fhacal mu dheireadh a’ toirmeasg a’ phàiste/chlas a thàinig bho bhith a’ dol thairis air gnìomh pàrant/chlas bunaiteach. Thoir sùil air an eisimpleir a leanas gus faicinn mar a tha am prìomh fhacal deireannach air a chleachdadh.
<?php
class Fruit {
final public function intro() {
// code
}
}
class Apple extends Fruit {
// error to override the intro
public function intro() {
// code
}
}
?>
Bidh an clas ubhal a’ feuchainn ri faighinn seachad air an dòigh intro san eisimpleir roimhe. Tilgidh e mearachd bhon a chleachd sinn am prìomh fhacal mu dheireadh le gnìomh intro a’ chlas Fruit.
Ma tha thu airson barrachd a leughadh mu dhìleab PHP tha sinn a’ moladh na leanas stiùireadh oifigeil.
Q&A
C: Ann am PHP OOP, dè a th’ ann an dìleab?
F: Ann am PHP OOP, is e siostam a th’ ann an oighreachd a leigeas le clas ùr buadhan agus dòighean clas a bh’ ann roimhe a shealbhachadh. Tha seo a’ ciallachadh gum faod an clas ùr còd agus comas-gnìomh clas pàrant ath-chleachdadh fhad ‘s a chuireas iad feartan agus dòighean ùra ris fhèin.
C: Ann am PHP, ciamar a mhìnicheas tu clas a gheibh sealbh bho chlas eile?
A: Ann am PHP, tha am prìomh fhacal “leudachadh” air a chleachdadh gus clas a mhìneachadh a gheibh seilbh bho chlas eile. Mar eisimpleir, ma tha clas pàrant “ParentClass” agad agus gu bheil thu airson clas cloinne “Clas-chloinne” a thogail a thig bhuaithe, faodaidh tu sgrìobhadh:
class ChildClass extends ParentClass {
// properties and methods
}
C: Ann am PHP, an urrainn do chlas sealbhachadh bho ghrunn chlasaichean?
F: Chan e, ann am PHP, chan urrainn do chlas ach sealbhachadh bho aon chlas eile. Ach, faodar eadar-aghaidh a chleachdadh gus gnìomhachd co-ionann a sholarachadh, agus faodaidh clas iomadh eadar-aghaidh a chuir an gnìomh.
C: A bheil e comasach faighinn thairis air modh ann an clas cloinne?
F: Faodaidh, faodaidh tu dòigh-obrach ann an clas cloinne a thoirt thairis le bhith a’ cruthachadh modh leis an aon ainm. Nuair a thèid a chleachdadh air nì clas cloinne, thèid an dòigh clas cloinne a chleachdadh an àite modh clas pàrant.
C: A bheil e comasach modh clas pàrant a chleachdadh bho chlas cloinne?
A: Faodaidh, faodaidh tu am prìomh fhacal “pàrant” a chleachdadh agus an gnìomhaiche fuasglaidh farsaingeachd (::) agus an t-ainm modh airson modh clas pàrant a ghairm bho chlas cloinne. Mar eisimpleir:
class ChildClass extends ParentClass {
public function childMethod() {
parent::parentMethod();
}
}
Exercises:
- Dè am prìomh fhacal a thathas a’ cleachdadh ann am PHP gus sealltainn gu bheil clas a’ sealbhachadh bho chlas eile?
- Ciamar a gheibh thu cothrom air modh no seilbh bhon chlas phàrant ann an clas cloinne?
- Ciamar a chuireas tu fios gu neach-togail a’ chlas phàrant taobh a-staigh neach-togail clas cloinne?
- Ciamar a chuireas tu casg air dòigh-obrach no seilbh bho bhith air a thoirt thairis ann an clas cloinne?
- Dè an diofar eadar na
extends
agusimplements
prìomh fhaclan ann am PHP?
freagairtean:
- Tha
extends
Tha prìomh fhacal air a chleachdadh ann am PHP gus sealltainn gu bheil clas a’ sealbhachadh bho chlas eile. - Gheibh thu cothrom air modh no seilbh bhon chlas phàrant ann an clas cloinne le bhith a’ cleachdadh an
parent::
prìomh fhacal, air a leantainn leis an dòigh no ainm an togalaich. - Faodaidh tu fios a chuir gu neach-togail a’ chlas phàrant taobh a-staigh neach-togail clas cloinne le bhith a’ cleachdadh an
parent::__construct()
dòigh. - Faodaidh tu casg a chuir air dòigh no seilbh bho bhith air a thoirt thairis ann an clas cloinne le bhith a’ cleachdadh an
final
prìomh fhacal ron mhodh no dearbhadh seilbh anns a’ chlas phàrant. - Tha
extends
Tha prìomh fhacal air a chleachdadh gus sealltainn gu bheil clas a’ sealbhachadh bho chlas eile, fhad ‘s a tha animplements
prìomh fhacal air a chleachdadh gus sealltainn gu bheil clas a’ cur an gnìomh eadar-aghaidh.