Is it possible to override a core function instead of just altering it? I would like to add a feature to the core string contextual filter, implemented in core/modules/views/src/Plugin/views/argument/StringArgument.php.

If I use hook_views_query_alter(), I would have to undo everything the core function did first, then roll out my changes. 

Is there a way to just completely override the core function instead of only altering the results? 

The contextual range filter accomplishes this by presenting the site admin with a configuration page to select which instances of an existing filter should be replaced by the new object. I could follow this route, but I would prefer to update all cases site-wide.
Personally I would make an inheritance from this core plugin, extend it in my own class (classes), and change in the views to use my custom plugin.