Add the code x = 10 in the m() method of the Toast class. Then you will know the order of the method call.
Now read what Steve Morrow said:
The addValue() method in Derived overrides the Base method; the method is resolved at runtime based on the object type. Therefore, the Derived addValue() method gets called twice (once for each constructor call)
Hope that helps. I might be wrong too.
Thanks,
-Vijay