| 
							nikedeforest
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 «  : 19-06-2004 11:20 »   | 
								
								 | 
							  
							 
							Извеняюсь, если не туды впихнул вопрос.  Готовлюсь к экзамену, читаю вопрос и вижу что не знаю, потому что не использовал (не требовалось как-то). Вопрос прост: " дирректива override" , в чем ее смысл? Я всегда думал, что она используется только когда применяется абстрактный метод, но я увидел пример, где дирректива override применяется без абстрактного метода, и я не понял смысл ее нахождения там. Вот в принципе пример:
  type
  Obj=class     procedure virtmetod1; virtual;     procedure virtmetod2; virtual; end;
      Obj1=class (Obj)            procedure virtmetod1;override;      end;
  procedure obj.virtmetod1;    begin              writeln('working virtmetod1  Obj');    end; 
  procedure obj.virtmetod2;     begin               writeln('working virtmetod2 Obj');     end;
  procedure Obj1.virtmetod1;     begin           writeln('working virtmetod1  Obj1');     end;
  var a:Obj1;     begin           a:=obj.create;           a.virtmetod1;           a.virtmetod2;      end.
   И вот что меня смущает, Рез-ты : на консоль выдано virtmetod1 obj1                                                                                  virtmetod2 obj
   а вот если сделать так: изменение в классе Obj1 
  Obj1=class(Obj)     procedure virtmetod1;virtual; end;
  саму процедуру не меняем, то  рез-ты следующие : на консоль выдано virtmetod1 Obj                                                              virtmetod2 Obj Я НЕ ПОНИМАЮ, ПОЧЕМУ.  Ну объясните мне дураку такому, что особенного произошло, я знаю для чего испльзуется virtual, неужели я не могу вызвать этот метод. По этому примеру получается что не могу. 
						 |