Изучаю
полиморфизм - способность класса-родителя использовать функции, классов-потомков, даже если неизвестно реализованы функции-потомков или нет.
Вот написал элементарный код, без реализации, выдаёт ошибку:
abstract class Db{
abstract function db_conn();
abstract function db_open();
abstract function db_query();
abstract function db_close();
}
class B extends Db{
function db_conn() {};
function db_open() {};
function db_query() {};
function db_close() {};
}
$o1 = new B;
Цитата:
|
Parse error: syntax error, unexpected ';', expecting T_FUNCTION in C:\www\htdocs\test.ru\www\index.php on line 11
|
Дальше, пробую по примеру в книге вот этот код, который в классе-родителе
вызывают функцию из производного класса, но интерпретатор тоже ругается.
<?php
class A {
// Выводит, функция какого класса была вызвана
function Test() { echo "Test from A\n"; }
// Тестовая функция — просто переадресует на Test()
function Call() { Test(); }
}
class B extends A {
// Функция Test() для класса B
function Test() { echo "Test from B\n"; }
}
$a=new A();
$b=new B();
$a->Call(); // выводит "Test from A"
$b->Test(); // выводит "Test from B"
$b->Call(); // Внимание! Выводит "Test from B"!
?>
Цитата:
|
Fatal error: Call to undefined function Test() in C:\www\htdocs\test.ru\www\index.php on line 7
|