Итак, что же такое классы и их наследники и чем они отличаются от объектов.
Возьмём, к примеру, класс Стол. Этот класс обладает свойствами: Длина, Ширина, Высота. И имеет метод, например: Стоять.
У класса Стол есть наследники (дочерние классы). Например, класс ПисьменныйСтол и КомпьютерныйСтол. Эти классы наследуют от родительского класса Стол все его свойства (Длина, Ширина, Высота) и методы (Стоять), но класс ПисьменныйСтол, по мимо унаследованных от родительского класса Стол свойств и методов, может иметь дополнительное своство КоличествоЯщиков и метод ВыдвинутьЯщик. Также и класс КомпьютерныйСтол может иметь свойство КоличествоСекцийДляCD и метод ВыдвинутьСтолешницу.
Стол, КомпьютерныйСтол и ПисьменныйСтол -- это классы.
Почему?
Потому что это некоторые сущности, которые описывают некий набор свойств и поведений характерных для всех столов (класс Стол) или только для компьютерных столов (класс КомпьютерныйСтол) или только для письменных столов (класс ПисьменныйСтол).
Но тогда что же такое объект?
Объект -- это стол за которым ты сейчас сидишь (причём скорее всего это объект класса КомпьютерныйСтол). Объект -- это (в большинстве случаев) экземпляр некоторого класса. Также как твой компьютерный стол является экземпляром класса КомпьютерныйСтол.
Перенося всё это в PHP код получим:
<?php
/**
* Стол
*/
class Table {
/**
* Длина стола
* @var float
*/
public Length;
/**
* Ширина стола
* @var float
*/
public Width;
/**
* Высота стола
* @var float
*/
public Height;
/**
* Осуществляет стояние стола
*/
public function Stand() {
}
}
/**
* КомпьютерныйСтол
*/
class ComputerTable extends Table {
/**
* Количество секций для CD
* @var int
*/
public CDSectionsCount;
/**
* Выдвигает столешницу с клавиатурой
*/
public function MoveOutTabletop() {
}
}
/**
* ПисьменныйСтол
*/
class Desk extends Table {
/**
* Количество ящиков
* @var int
*/
public DeskDrawerCount
/**
* Выдвигает ящик с указанным номером
* @param int $DeskDrawerNumber Номер выдвигаемого ящика
*/
public function MoveOutDeskDrawer($DeskDrawerNumber) {
}
}
$MyTable = new Table(); // а вот $MyTable -- это уже объект класса Table
$MyTable->Width = 1;
$MyTable->Height = 0.7;
$MyTable->Length = 3;
$MyComputerTable = new ComputerTable(); // $MyComputerTable -- тоже объект
$MyComputerTable->Width = 0.8; // и так как класс ComputerTable является
$MyComputerTable->Height = 0.7; // наследником класса Table, то он имеет
$MyComputerTable->Length = 0.5; // все теже свойства что и объект $MyTable
$MyComputerTable->CDSectionsCount = 5; // плюс новое свойство CDSectionsCount
$MyComputerTable->Stand(); // Аналогично свойствам наследуются и методы
$MyComputerTable->MoveOutTabletop();
?>
P.S.: PHP -- не лучший выбор для начала освоениея ООП, но сейчас я пишу в основном на нём.
Комментариев нет:
Отправить комментарий