You can override any method of a class, the question is really how to access the non-virtual method, or should I have made the method virtual in the first place.
With a virtual method, you always access the overridden method regardless of the class variable used to reference it. When you have a non-virtual method, you must use a class variable with a class type that has the overridden method defined. You have a few choices, but realize none of them may work for you and you need to go back and make the method virtual.
If the code knows the class has been overridden, you need to put the handle to extended class object in an extended class variable. You do this by constructing the object and keeping it an extended class variable, or using $cast(ext_h,base_h) to move the handle back into an extended class variable.
Another technique is to call a virtual method that gets you into the scope of the extended class, and call the non-virtual method. This is how the clone()/copy() methods work. clone() is a virtual method that constructs a new object receiving the copy, then calls the non-virtual copy() method to perform the copy to the new object.