Hi Dave,
"Overriding" specifically implies
polymorphism, so that, in your example, whether G.aMethod() or F.aMethod() were called would depend on the runtime type of some object. But all you have here is "hiding" -- which method will be called is decided at compile time, not runtime. This is similar to declaring a member variable x in both F and G; the x in the child will simply hide the one in the parent; the parent's methods will continue to use the one in the parent.