| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			например  
		
		
		
		
		
		
		
	X++: class A { void insert(); } class B extends A class C extends B  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			super();
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			вызвав super() из C::insert()  я вызову B::insert() 
		
		
		
		
		
		
		
	а мне нужен A::insert()  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			to Omeo: 
		
		
		
		
		
		
		
	PHP код: 
	
			
	С другой стороны, если Вам не нужны свойства класса B, зачем от него наследовать C? Может лучше рассказать первичную задачу.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			потому что нужна вся функциональность B кроме метода insert  ( ну и пары других методов )
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если переопределен метод на B, то в C его никак нельзя вызвать. Нужно классы проектировать по другому.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			[Закидано помидорами]
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Здесь могла быть Ваша реклама!  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Так может проще эти пару метов & insert вынести 
		
		
		
		
		
		
		
	в отдельный класс и не греть голову ![]() class A - базовый class B - расширение функций class C & D со своими insert-ами  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 1C 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Omeo  
вызвав super() из C::insert() я вызову B::insert() а мне нужен A::insert()  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			вот именно что в В::insert() выполняются действия которые мне не нужны, а super() там конечно есть 
		
		
		
		
		
		
		
	все равно, спасибо всем за помощь  
		 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Пенсионер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Используй флаги - например переменную в классе "А", а в классе "С" устанавливай нужное значение, которое анализируется в классе "В" и направляет свой insert() по нужному тебе пути.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	  Законы природы еще никто не отменял!А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Oz  
PHP код: 
	
			
	Грубо конечно, но ничего другого в голову не приходит. В методе class A::insertFromA() { insert(); вызовется метод insert ПОТОМКА, то есть класса С но уж никак не А. Если конечно мы говорим об экземпляре(объекте) созданном на основании класса С. 2. Ошибки в синтаксисе. перед вызовом метода необходимо указывать контекст. то есть нужно написать this.insert(); 3. Зачем переопределять метод insertFromA на С если там вызывается просто супер? 4. Если в коде УЖЕ используется вызов метода insert? Вы предлагаете переписать весь код? А если нам нужно использовать этот код не только для экземпляров класса С? Абсолютно бессмысленный пример-совет. Господа. Прежде чем давать советы, сначала может быть проверите то, что советуете сами? А потом уже будете садиться в лужу?  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано blokva  
Используй флаги - например переменную в классе "А", а в классе "С" устанавливай нужное значение, которое анализируется в классе "В" и направляет свой insert() по нужному тебе пути. Но, к сожалению, придется трогать класс В для целей класса С... что не очень хорошо. :(  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Пенсионер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Цель определяет средства! 
		
		
		
		
		
		
			Можешь создать класс "D" наследник "A" но с функциональностью "B" + "C" - "то, что не нужно" из "B"! 
				__________________ 
		
		
		
		
	  Законы природы еще никто не отменял!А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Приведение по-аксаптовскию Выглядит дико, но работает 
		
		
		
		
		
		
		
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано blokva  
Цель определяет средства! Можешь создать класс "D" наследник "A" но с функциональностью "B" + "C" - "то, что не нужно" из "B"! - убрать оттуда перекрытый метод - сделать B наследником X - убрать из B все, кроме перекрытого метода - С наследовать из X  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Дмитрий Ерин 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Lexey  
Приведение по-аксаптовскию Выглядит дико, но работает PHP код: 
	
			
	 . Совсем недавно столкнулся...В Вашем примере вызовется метод класса С (то есть рекурсия) и произойдет переполнение стека. ded = this приводит к тому, что дед становится внуком. Это в дебаггере хорошо видно (хоть и странновато). У переменной ded после такого присвоения Type будет указывать по-прежнему на А, но Value покажет new, C. Или я Вас неправильно понял? Так как же все-таки работает приведение (пусть даже дикое)? Остальные предложенные варианты вполне очевидны... Но, интересно, кто-нибудь думал о варианте, когда классы А и В - системные?   По-моему, нерешаемо... Кто как думает?
		
				__________________ 
		
		
		
		
	 
			 | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ОК, не работает. Хотя в другую сторону по иерархии все проходит. 
		
		
		
		
		
		
		
	Делаем так. PHP код: 
	
			
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			 Но, интересно, кто-нибудь думал о варианте, когда классы А и В - системные?
		
	 
как ниболее быстрое решение сделал копию В  | 
| 
	
 |