Walker for menus

All of the methods are being overridden when you load your own walker, but typically you would extend another Walker which works a bit like “filtering” or “pluggable functions”.

Take a look at this very simple walker from another question:

class my_extended_walker extends Walker_Nav_Menu {
    function start_lvl(&$output, $depth = 0, $args = array()) {
        $output .= "\n<p class=\"sub-menu\">\n";
    }

    function end_lvl(&$output, $depth = 0, $args = array()) {
        $output .= "\n</p>\n";
    }
}

That Walker extends a WordPress Core Walker called Walker_Nav_Menu. There are two methods in that extended walker. Those two overwrite the two methods of the same name in the core Walker. The other methods in Walker_Nav_Menu will be left unchanged.

That is, you can pick and choose which methods to overwrite and you only need to overwrite the ones you need to overwrite. The structure of your class determines what is overwritten, in other words.