Forum Webscript.Ru

Программирование => PHP => Тема начата: Nikman от 28 Июля 2003, 13:06:13

Название: Вопрос по наследованию!
Отправлено: Nikman от 28 Июля 2003, 13:06:13
При наследовании клас который наследуют может использовать функции с класа который наследует?

class new_class extends class1{
          }

Может ли class1 использовать фунции new_class  усли функция из class1 которая использует функцию из new_class вызываеться из new_class?
Название: Вопрос по наследованию!
Отправлено: ThE0ReTiC от 28 Июля 2003, 13:27:10
вот это сформулировал.
прочитал 4 раза - ничего не понял.
короче.
есть родительский класс
есть дочерние классы, которые наследуются от родительского.
все дочерние классы наследуют все методы и свойства радительского (по крайней мере с РНР, так как там нет пока механизмов этого не допускающих)
поэтому можно использовать в дочерних классах все функции, определенные в родительском.
Название: Вопрос по наследованию!
Отправлено: Nikman от 28 Июля 2003, 14:25:41
А родительський может использовать функции из дочернего :)?
Или как сделать чтоб два класа могли использовать функции один у другого :)?
Название: Вопрос по наследованию!
Отправлено: ThE0ReTiC от 28 Июля 2003, 14:34:25
ну вообще-то по правилам нет,
однако в РНР прокатывает конструкция типа:

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
   }
}

Название: Вопрос по наследованию!
Отправлено: ThE0ReTiC от 28 Июля 2003, 14:36:12
Цитировать
Nikman:
Или как сделать чтоб два класа могли использовать функции один у другого

вообще подобная необходимость - ИМХО ошибки проектирования структуры и наследования...
или может а не понимаю, что ты подразумеваешь под использованием одной и той же функции ?
Название: Вопрос по наследованию!
Отправлено: nagash от 28 Июля 2003, 15:00:02
слить их в один класс
Название: Вопрос по наследованию!
Отправлено: Nikman от 28 Июля 2003, 15:03:02
У меня есть базовый клас к которому я решил дописать несколько функций... Я не хотел их писать в этом класе а думал написать отдельно... Но вижу что так не выйдет... :)
Название: Вопрос по наследованию!
Отправлено: ThE0ReTiC от 28 Июля 2003, 15:05:37
Nikman
почему не выйдет?
все выйдет
дочерний класс же наследует все от родителя...
поетому тебе надо будет только дописать соответствующие функции и/или переопределить функции родительского класса, если ты собираешься менять их функциональность.
Название: Вопрос по наследованию!
Отправлено: Nikman от 28 Июля 2003, 15:28:46
Немного иначе... Мне нужно чтоб дочерний наследовал функциии у родителя а тот в свою очередь мог использовать функции дочернего. Например:

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();
    }
}
Название: Вопрос по наследованию!
Отправлено: Nikman от 28 Июля 2003, 15:36:27
Можно сделать например вот так:


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();
    }
}



????????????????
Название: Вопрос по наследованию!
Отправлено: ThE0ReTiC от 28 Июля 2003, 15:39:39
Nikman
вместо того, чтобы изобретать велосипед - посмотри комменты в мануале
там есть пример того, что тебе нужно.
Название: Вопрос по наследованию!
Отправлено: nagash от 28 Июля 2003, 15:42:23
да зачем тебе всё это надо?
сделай один класс и не мучайся...
морока совершеннон непонятная...
Название: Вопрос по наследованию!
Отправлено: ThE0ReTiC от 28 Июля 2003, 18:53:24
Цитировать
nagash:
сделай один класс и не мучайся...

ну это да.
к тому же вызов потомка из предка - это дополнительный расход памяти, так как надо создать объект