Personally I would use the parent thing, and have the same method name in the parent calling parent there. Or, if you don't need anything else than a call to the parent, just leave it out. There may be another way, but if it is designed in a way that don't allow what I suggested I think there will be problems when updating, especially if someone else will do the update. It simply is bad programming doing it any other way.
But I don't understand your last post. You state that you want to get to a sibling. Well, a sibling is not the same object so you need to reference the object that contains the sibling instead of trying to reference the sibling as it was the same object. You simply can't access any other object the way you seem to want, you can only access methods in the same object. Parents are in the same object, so are grandparents. In your example, if you do a object of child class 3 you can access everything except child class 4 since that is not in the same object. If you don't understand this I think you should read up on classes and objects to get the difference.
I hope you understand what I'm trying to say. I can't help you out further, if you need further help someone else have to help you out.