You compared an orange to an orange since compilers are smart enough to optimize an object w/o any methods into a record. Compare it with a method in each and see if its the same. Unless something major has changed under the hood of Delphi then it shouldn't be.

As for changing the method on the fly, you have to change the method pointer to point to a new method or walk the method pointer to the code block and overwrite that block with a new instruction set. Its true polymorphic development.

I'm not going to get into exacts in this thread as its a complicated subject and is way off-topic.