Дефиниране на дъщерен клас
Ако имаме нужда от класове със свойства и методи, подобни на тези от друг клас, е необходимо да приложим принципа за наследяване на класове. Дъщерен клас (клас наследник) можем да създадем с помощта на ключовата дума 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), и да създадете нов обект от дъщерния клас с помощта на метод конструктор.
Няма коментари:
Публикуване на коментар