Να το πούμε αλλιώς:
Το interface είναι ένα "συμβόλαιο" που σου υποδεικνύει πώς θα έπρεπε να υλοποιήσεις methods και properties των κλάσεών σου. Οταν ορίζεις ένα interface, στην ουσία δεν γράφεις κώδικα για κάποια κλάση, απλά καθορίζεις τις "υπογραφες".
Από την άλλη μεριά, όταν θέλεις μια κλάση να κληρονομεί κώδικα από μια άλλη (πρόσεξες το "κληρονομεί"; :) ) τότε έρχεται στο φως η έννοια του inheritance.
Ετσι, μπορείς να φτιάξεις μια κλάση που θα περιέχει το βασικό σου κώδικα (η λεγόμενη base class), και κλάσεις οι οποίες "κληρονομούν" από αυτήν, έχοντας το δικαίωμα να χρησιμοποιήσουν όλες τις μεθόδους και τα properties της και φυσικά χωρίς να περιορίζονται εκεί.
Η base class σου μπορεί να είναι και η ίδια χρησιμοποιήσιμη (οπότε μιλάμε για μια κανονική κλάση) ή abstract (που σημαίνει οτι μόνο οι κλάσεις που κληρονομούν από αυτή θα μπορούν να χρησιμοποιηθούν). Στη δεύτερη περίπτωση όντως μιλάμε για abstract κλάση, η οποία στη VB πρέπει να δηλώνεται με τη λέξη-κλειδί MustInherit.
Πρεπει να γράψουμε κάποιο άρθρο για αυτά, γιατί είναι ένα θέμα που φαντάζομαι οτι θα ήθελαν και άλλοι συνάδελφοι ξεκάθαρες απόψεις. Σιγουρα μέσα από ένα post μπορεί να μην έχω την άνεση να αναπτύξω σε όλη του την έκταση το θέμα του inheritance και τη διαφορά από τα interfaces...
Σωτήρης Φιλιππίδης
DotSee Web Services