IB's void M doesn't really override IA's void M because IB's method restricts the arguments to only ID's so ID is different from IC. Therefore void M would be an overloaded method.