Дефиниране на дъщерен клас
Ако имаме нужда от класове със свойства и методи, подобни на тези от друг клас, е необходимо да приложим принципа за наследяване на класове. Дъщерен клас (клас наследник) можем да създадем с помощта на ключовата дума extends.
Синтаксисът е следния:
Синтаксисът е следния:
class Child extends Parent {
//Дефиниране на тялото на класа наследник
}
//Дефиниране на тялото на класа наследник
}
Класът наследник има следните характеристики:
- ✴ Автоматично приема всички декларирани член променливи от родителския клас.
- ✴ Автоматично приема всички член функции на родителския клас, които ще работят по начина, по който работят и в родителския клас.
//Създаване на дъщерен клас class MetalOxides extends Metals { //Деклариране на свойствата public $Name; //Дефиниране на методите public function setName ($par){ $this-> Name = $par; } public function getName(){ echo $this-> Name . " " . "се образува при непълно горене на натрий в кислородна среда.<br/>"; } }
Създаване на нов обект в дъщерен клас
Скриптът за създаване на нови обекти на дъщерния клас, за задаване на имена на обектите и за получаване на имената им, ще изглежда така:
//Създаване на нови обекти на дъщерния клас
$DisodiumOxide= new MetalOxides;
//Задаваме имена на обектите от дъщерния клас
$DisodiumOxide->setName("Динатриев оксид");
//Получаваме имета на обекта от дъщерния клас
$DisodiumOxide->getName();
$DisodiumOxide= new MetalOxides;
//Задаваме имена на обектите от дъщерния клас
$DisodiumOxide->setName("Динатриев оксид");
//Получаваме имета на обекта от дъщерния клас
$DisodiumOxide->getName();
Класът наследник наследява всички public и protected методи от базовия клас. Те запазват своята функционалност до момента, в който класът наследник ги отмени (това се нарича function overriding).
Вмъкнете редовете от скрипта, записан по-горе, след ред 99 във файла phpClass.php. Съхранете новия файл като inheritance.php.
Съдържанието на файла inheritance.php:
Вмъкнете редовете от скрипта, записан по-горе, след ред 99 във файла phpClass.php. Съхранете новия файл като inheritance.php.
Съдържанието на файла inheritance.php:
<?php //inheritance.php header('Content-Type: text/html; charset=utf-8'); class Metals { //Деклариране на свойствата на класа public $name; //име на метала public $physical_state; //агрегатно състояние public $boiling_temperature; //температура на кипене public $melting_temperature; //температура на топене //Деклариране на методите на класа public function setName ($par){ $this->name = $par; } public function getName(){ echo $this->name ."<br/>"; } public function setPhysicalState ($par){ $this-> physical_state = $par; } public function getPhysicalState(){ echo $this-> physical_state ."<br/>"; } public function setBoilingTemperature ($par){ $this-> boiling_temperature = $par; } public function getBoilingTemperature(){ echo $this-> boiling_temperature ."<br/>"; } public function setMeltingTemperature ($par){ $this-> melting_temperature = $par; } public function getMeltingTemperature(){ echo $this-> melting_temperature ."<br/>"; } } //Създаване на дъщерен клас class MetalOxides extends Metals { //Деклариране на свойствата public $Name; //Дефиниране на методите public function setName ($par){ $this-> Name = $par; } public function getName(){ echo $this-> Name . " " . "се образува при непълно горене на натрий в кислородна среда.<br/>"; } } //Създаване на нови обекти на базовия клас $Sodium = new Metals; //Създаване на нов обект „Натрий“ $Potassium= new Metals; //Създаване на нов обект „Калий“ $Zink= new Metals; //Създаване на нов обект „Цинк“ //Задаваме имена на обектите от базовия клас $Sodium->setName( "Натрий" ); $Potassium->setName( "Калий" ); $Zink->setName( "Цинк" ); //Задаваме агрегатно състояние на обектите от базовия клас $Sodium->setPhysicalState("твърдо"); $Potassium->setPhysicalState("твърдо"); $Zink->setPhysicalState("твърдо"); //Задаваме температура на кипене на обектите от базовия клас $Sodium->setBoilingTemperature("883 °C"); $Potassium->setBoilingTemperature("759 °C"); $Zink->setBoilingTemperature("907 °C"); //Задаваме температура на топене на обектите от базовия клас $Sodium->setMeltingTemperature("97,79°C"); $Potassium->setMeltingTemperature("63,38°C"); $Zink->setMeltingTemperature("419,53°C"); //Получаваме имената на обектите от базовия клас echo 'Имената на обектите са: ' . '<br>'; $Sodium->getName(); $Potassium->getName( ); $Zink->getName(); //Получаваме агрегатното състояние на обектите от базовия клас echo 'Агрегатните състояния на обектите са: ' . '<br>'; $Sodium->getPhysicalState(); $Potassium->getPhysicalState(); $Zink->getPhysicalState(); //Получаваме температурата на кипене на обектите от базовия клас echo 'Температурите на кипене на обектите са: ' . '<br>'; $Sodium->getBoilingTemperature(); $Potassium->getBoilingTemperature(); $Zink->getBoilingTemperature(); //Получаваме температурата на топене на обектите от базовия клас echo 'Температурите на топене на обектите са: ' . '<br>'; $Sodium->getMeltingTemperature(); $Potassium->getMeltingTemperature(); $Zink->getMeltingTemperature(); echo "<br><br>"; //Създаване на нови обекти на дъщерния клас $DisodiumOxide= new MetalOxides; //Задаваме имена на обектите от дъщерния клас $DisodiumOxide->setName("Динатриев оксид"); //Получаваме имета на обекта от дъщерния клас $DisodiumOxide->getName(); ?>
Резултатът в браузъра:
Ако имате желание, може да си поиграете, преработвайки файл constructor.php (http://dreamlandpoly.blogspot.bg/p/magic-methods.html#constructor), и да създадете нов обект от дъщерния клас с помощта на метод конструктор.
Няма коментари:
Публикуване на коментар