Forum Webscript.Ru
Программирование => PHP => Тема начата: Nikman от 28 Июля 2003, 13:06:13
-
При наследовании клас который наследуют может использовать функции с класа который наследует?
class new_class extends class1{
}
Может ли class1 использовать фунции new_class усли функция из class1 которая использует функцию из new_class вызываеться из new_class?
-
вот это сформулировал.
прочитал 4 раза - ничего не понял.
короче.
есть родительский класс
есть дочерние классы, которые наследуются от родительского.
все дочерние классы наследуют все методы и свойства радительского (по крайней мере с РНР, так как там нет пока механизмов этого не допускающих)
поэтому можно использовать в дочерних классах все функции, определенные в родительском.
-
А родительський может использовать функции из дочернего :)?
Или как сделать чтоб два класа могли использовать функции один у другого :)?
-
ну вообще-то по правилам нет,
однако в РНР прокатывает конструкция типа:
class A
{
var $cs, $b;
function A
{
// Do Something
}
function make_b_child
{
$this->b=new B;
}
}
class B extends A
{
function B
{
// Do Something
}
}
-
Nikman:
Или как сделать чтоб два класа могли использовать функции один у другого
вообще подобная необходимость - ИМХО ошибки проектирования структуры и наследования...
или может а не понимаю, что ты подразумеваешь под использованием одной и той же функции ?
-
слить их в один класс
-
У меня есть базовый клас к которому я решил дописать несколько функций... Я не хотел их писать в этом класе а думал написать отдельно... Но вижу что так не выйдет... :)
-
Nikman
почему не выйдет?
все выйдет
дочерний класс же наследует все от родителя...
поетому тебе надо будет только дописать соответствующие функции и/или переопределить функции родительского класса, если ты собираешься менять их функциональность.
-
Немного иначе... Мне нужно чтоб дочерний наследовал функциии у родителя а тот в свою очередь мог использовать функции дочернего. Например:
class A {
function new_funct_A(){
$this->new_funct_B();
}
}
class B extends A{
function new_funct_B(){
//do something
}
function main_funct_B(){
$this->new_funct_A();
}
}
-
Можно сделать например вот так:
class A extends B{
function new_funct_A(){
$this->new_funct_B();
}
}
class B extends A{
function new_funct_B(){
//do something
}
function main_funct_B(){
$this->new_funct_A();
}
}
????????????????
-
Nikman
вместо того, чтобы изобретать велосипед - посмотри комменты в мануале
там есть пример того, что тебе нужно.
-
да зачем тебе всё это надо?
сделай один класс и не мучайся...
морока совершеннон непонятная...
-
nagash:
сделай один класс и не мучайся...
ну это да.
к тому же вызов потомка из предка - это дополнительный расход памяти, так как надо создать объект