A) The correction to your test:
Your second class is not achieving anything different. The idea is that Shadowing allows you to hide an inherited public member. The following would result in what Microsoft describes:
Public Class Person
Public Function setStringA(...) As String
Public Class FirstChildClass
Shadows Function setStringA(...) As String
Public Class SecondChildClass
Of course, if you hide the method by shadowing it as Private, then you can't call that method of the child class or the matching base class' method either. As long as it's public, it will be inherited.
The shadow "functionality" of VB
.NET throws mud in the face of OOP. Using Shadows to hide a public method of an inherited class throws a monkey wrench into the concept of inheritance and should be avoided. If you have to use shadowing, then the class design should probably be re-thought.