Υπάρχουν διάφορα θέματα με την υλοποίησή σου. Κατ' αρχήν, έχεις ορίσει τα μέλη της κλάσης σου σαν public πεδία και όχι properties, κάτι που σε περιορίζει πάρα πολύ, και ιδιαίτερα στο ότι δεν μπορείς με αυτό τον τρόπο να ορίσεις πολυμορφική συμπεριφορά στα object σου. Έτσι καταλήγεις να χρησιμοποιείς το Shadows, που δεν είναι και πολύ καλή πρακτική.
Θα ήταν προτιμότερο η base class σου να είναι κάπως έτσι:
Public Class ActiveUnit
Inherits Unit
Public Overridable Property Navigator() As ActiveUnit_Navigator
...
End Property
Public Overridable Property AI() As ActiveUnit_AI
...
End Property
Public Overridable Property Kinematics() As ActiveUnit_Kinematics
...
End Property
Public Overridable Property Sensory() As ActiveUnit_Sensory
...
End Property
End Class
και να κάνεις override τα properties στις derived κλάσεις ώστε να επιστρέφουν αντικείμενο του σωστού τύπου (π.χ. Aircraft_Navigator).
Αντίστοιχα η ActiveUnit_Navigator θα έχει μια Overridable Sub PlotCourse() την οποία η Aircraft_Navigator θα κάνει override με τη σωστή υλοποίηση κλπ.
Και μια τελευταία παρατήρηση: τα underscores σε ονόματα κλάσεων είναι bad practice, αν περάσεις το project σου από τον FxCop θα διαμαρτυρηθεί.
Νατάσα Μανουσοπούλου