Автор Тема: Вопрос по наследованию!  (Прочитано 4392 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nikman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос по наследованию!
« : 28 Июля 2003, 13:06:13 »
При наследовании клас который наследуют может использовать функции с класа который наследует?

class new_class extends class1{
          }


Может ли class1 использовать фунции new_class  усли функция из class1 которая использует функцию из new_class вызываеться из new_class?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по наследованию!
« Ответ #1 : 28 Июля 2003, 13:27:10 »
вот это сформулировал.
прочитал 4 раза - ничего не понял.
короче.
есть родительский класс
есть дочерние классы, которые наследуются от родительского.
все дочерние классы наследуют все методы и свойства радительского (по крайней мере с РНР, так как там нет пока механизмов этого не допускающих)
поэтому можно использовать в дочерних классах все функции, определенные в родительском.
AS IS...

Оффлайн Nikman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос по наследованию!
« Ответ #2 : 28 Июля 2003, 14:25:41 »
А родительський может использовать функции из дочернего :)?
Или как сделать чтоб два класа могли использовать функции один у другого :)?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по наследованию!
« Ответ #3 : 28 Июля 2003, 14:34:25 »
ну вообще-то по правилам нет,
однако в РНР прокатывает конструкция типа:

class A
{
   var 
$cs$b;
   function 
A
   
{
       
// Do Something
   
}
   function 
make_b_child
   
{
        
$this->b=new B;
   }
}
class 
extends A
{
   function 
B
   
{
        
// Do Something
   
}
}

AS IS...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по наследованию!
« Ответ #4 : 28 Июля 2003, 14:36:12 »
Цитировать
Nikman:
Или как сделать чтоб два класа могли использовать функции один у другого

вообще подобная необходимость - ИМХО ошибки проектирования структуры и наследования...
или может а не понимаю, что ты подразумеваешь под использованием одной и той же функции ?
AS IS...

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Вопрос по наследованию!
« Ответ #5 : 28 Июля 2003, 15:00:02 »
слить их в один класс

Оффлайн Nikman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос по наследованию!
« Ответ #6 : 28 Июля 2003, 15:03:02 »
У меня есть базовый клас к которому я решил дописать несколько функций... Я не хотел их писать в этом класе а думал написать отдельно... Но вижу что так не выйдет... :)

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по наследованию!
« Ответ #7 : 28 Июля 2003, 15:05:37 »
Nikman
почему не выйдет?
все выйдет
дочерний класс же наследует все от родителя...
поетому тебе надо будет только дописать соответствующие функции и/или переопределить функции родительского класса, если ты собираешься менять их функциональность.
AS IS...

Оффлайн Nikman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос по наследованию!
« Ответ #8 : 28 Июля 2003, 15:28:46 »
Немного иначе... Мне нужно чтоб дочерний наследовал функциии у родителя а тот в свою очередь мог использовать функции дочернего. Например:

class {
    function 
new_funct_A(){
           
$this->new_funct_B();  
           }
    }
class 
extends A{
     function 
new_funct_B(){
//do something
}    
     
    function 
main_funct_B(){
    
$this->new_funct_A();
    }
}

Оффлайн Nikman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос по наследованию!
« Ответ #9 : 28 Июля 2003, 15:36:27 »
Можно сделать например вот так:


class extends B
    function 
new_funct_A(){ 
           
$this->new_funct_B();   
           } 
    } 
class 
extends A
     function 
new_funct_B(){ 
//do something 
}     
      
    function 
main_funct_B(){ 
    
$this->new_funct_A(); 
    } 
}



????????????????

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по наследованию!
« Ответ #10 : 28 Июля 2003, 15:39:39 »
Nikman
вместо того, чтобы изобретать велосипед - посмотри комменты в мануале
там есть пример того, что тебе нужно.
AS IS...

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Вопрос по наследованию!
« Ответ #11 : 28 Июля 2003, 15:42:23 »
да зачем тебе всё это надо?
сделай один класс и не мучайся...
морока совершеннон непонятная...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по наследованию!
« Ответ #12 : 28 Июля 2003, 18:53:24 »
Цитировать
nagash:
сделай один класс и не мучайся...

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28