Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: ООП

Войти
Регистрация
Восстановить пароль
 
oke11o
155 / 25 / 2
Регистрация: 06.06.2009
Сообщений: 262
#1

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

02.05.2012, 19:35. Просмотров 639. Ответов 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)
Я так понимаю не может наследовать абстрактный метод, ранее определенный в абстрактном родительском классе? Подскажите как сделать наследование в абстрактных классах. Желательно использование интерфейсов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 19:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование в абстрактных классах (PHP ООП):

абстрактные свойства в интерфейсах и абстрактных классах - PHP ООП
Это, как я понимаю, невозможно?

Полиморфизм в классах - PHP ООП
Ошибка при выполнении функции Call(). Как я понимаю, он должен вернуть мне "Функция тест в классе B". class A { function Test() ...

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

Интерфейсы в статических классах - PHP ООП
А сейчас проблема с интерфейсами. Этот код : interface TableModelStaticInterface { static protected function insertNewRow($values); ...

Область видимости в классах - PHP ООП
Почему этот пример выдает именно такой результат? Ведь $this - ссылка на текующий экземпляр класса. class Bar { public function...

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

4
Kerry_Jr
Модератор
Эксперт PHP
2209 / 2005 / 702
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
30.08.2016, 12:00 #2
Понимаю, что поздно, но если вдруг кто-либо задумает написать такое, то обращайте внимание, чтобы в реализуемых интерфейсах и наследуемых классах не было одинаковых имен методов.
0
Jewbacabra
Эксперт PHP
2824 / 2411 / 905
Регистрация: 24.04.2014
Сообщений: 7,281
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
2209 / 2005 / 702
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 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
Привет! Вот еще темы с ответами:

Можно ли использовать такой подход в классах? - PHP ООП
Подскажите пожалуйста. Можно ли в конструкторе класса В, создавать объект другого класса А и потом обращаться к к методам A в классе...

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

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

Как в классе создать атрибут типа массив (двумерный) и потом в других классах использовать этот атрибут? - PHP ООП
Подскажите плз. как в классе создать атрибут типа массив (двумерный) и потом в других классах использовать этот атрибут?


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

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

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