declared final in the super class cannot be overridden; also, a method can be declared override to make the compiler check that it overrides a method in the base class. Delphi In Delphi, method overriding is done with the directive override, but only if a method was marked with the dynamic or virtual directives. The inherited reserved word must be called when you want to call super-class behavior type TRectangle = class private FLength: Double; FWidth: Double; public property Length read FLength write FLength; property Width read FWidth write FWidth; procedure Print; virtual; end; TBox = class(TRectangle) public procedure Print; override; end; Eiffel In Eiffel, feature redefinition is analogous to method overriding in C++ and Java. Redefinition is one of three forms of feature adaptation classified as redeclaration. Redeclaration also covers effecting, in which an implementation is provided for a feature which was deferred (abstract) in the parent class, and undefinition, in which a feature that was effective (concrete) in the parent becomes deferred again in the heir class. When a feature is redefined, the feature name is kept by the heir class, but properties of the feature such as its signature, contract (respecting restrictions for preconditions and postconditions), and/or implementation will be different in the heir. If the original feature in the parent class, called the heir feature's precursor, is effective, then the redefined feature in the heir will be effective. If the precursor is deferred, the feature in the heir will be deferred. The intent to redefine a feature, as in the example below, must be explicitly declared in the clause of the heir class. class THOUGHT feature message -- Display thought message do print ("I feel like I am diagonally parked in a parallel universe.%N") end end class ADVICE inherit THOUGHT redefine message end feature message -- Precursor do print ("Warning: Dates in calendar are closer than they appear.%N") end end In class the feature is given an implementation that differs from that of its precursor in class . Consider a class which uses instances for both and : class APPLICATION create make feature make -- Run application. do (create {THOUGHT}).message; (create {ADVICE}).message end end When instantiated, class produces the following output: I feel like I am diagonally parked in a parallel universe. Warning: Dates in calendar are closer than they appear. Within a redefined feature, access to the feature's precursor can be gained by using the