Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
oke11o
155 / 25 / 6
Регистрация: 06.06.2009
Сообщений: 262
#1

Наследование в абстрактных классах - PHP ООП

02.05.2012, 19:35. Просмотров 651. Ответов 4
Метки нет (Все метки)

Здравствуйте, есть следующий код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
interface TableModelStaticInterface {
}
abstract class TableModelStatic implements TableModelStaticInterface{
    static protected $DBH;  
    
    abstract static function initClass(PDO $DBH);
}
 
interface WatingProductInterface {
    static public function initClass (PDO $DBH);
    static public function addNewProduct($post);
}
 
class WatingProduct extends TableModelStatic implements WatingProductInterface {
 
    static protected $DBH;
    
    static public function initClass (PDO $DBH) {
        self::$DBH = $DBH;
    }   
}
Выдает ошибку
PHP
1
Fatal error: Can't inherit abstract function WatingProductInterface::initClass() (previously declared abstract in TableModelStatic)
Я так понимаю не может наследовать абстрактный метод, ранее определенный в абстрактном родительском классе? Подскажите как сделать наследование в абстрактных классах. Желательно использование интерфейсов.
http://www.cyberforum.ru/php-oop/thread1694503.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 19:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Наследование в абстрактных классах (PHP ООП):

Полиморфизм в классах
Ошибка при выполнении функции Call(). Как я понимаю, он должен вернуть мне...

Интерфейсы в статических классах
А сейчас проблема с интерфейсами. Этот код : interface...

Конструктор в дочерних классах
Добрый вечер, читаю книгу по ООП, разберая пример возник вопрос на который не...

Использование оператора '::' в классах
Доброго времени суток! Знаю, что в классах как-то используется оператор...

Область видимости в классах
Почему этот пример выдает именно такой результат? Ведь $this - ссылка на...

4
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
30.08.2016, 12:00 #2
Понимаю, что поздно, но если вдруг кто-либо задумает написать такое, то обращайте внимание, чтобы в реализуемых интерфейсах и наследуемых классах не было одинаковых имен методов.
0
Jewbacabra
Эксперт PHP
3090 / 2677 / 1223
Регистрация: 24.04.2014
Сообщений: 8,189
30.08.2016, 12:10 #3

Не по теме:

Ужас какой, одни static методы и поля


Цитата Сообщение от Kerry_Jr Посмотреть сообщение
то обращайте внимание, чтобы в реализуемых интерфейсах и наследуемых классах не было одинаковых имен методов.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface IFoo {
    public function bar();
}
 
abstract class AFoo {
    abstract public function bar();
}
 
class Foo extends AFoo implements IFoo {
    public function bar() {
        echo 'Foo::bar()';
    }
}
 
(new Foo)->bar();
1
Jodah
30.08.2016, 12:17
  #4

Не по теме:

Цитата Сообщение от Jewbacabra Посмотреть сообщение
(new Foo)->bar();
Опа, за это +1. Даже в голову не приходило, что можно так.

0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
30.08.2016, 12:38 #5
Jewbacabra, забыл добавить самое главное - если версия PHP ниже 5.3.10.
0
30.08.2016, 12:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2016, 12:38
Привет! Вот еще темы с решениями:

Вывод данных из mysql в классах
Всем привет - я только начинающий в ооп - и я создал класс все нормально...

Можно ли использовать такой подход в классах?
Подскажите пожалуйста. Можно ли в конструкторе класса В, создавать объект...

Не могу разобраться с видимостью переменных в классах
Тут проблема в переменной $HP. Почему-то она работает не правильно и NetBeans...

Зачем создают пустой __construct() в классах по умолчанию
Иногда встречаю такую конструкцию в классах class Text { function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru