Dal pdf di un corso di Java: http://www.ccs.neu.edu/home/riccardo/courses/csu370-fa07/lect4.pdfQuali lingue "hanno sottoclassi ma nessuna ereditarietà"?
Dice:
Per quelli di voi che seguono a casa, vorrei sottolineare che la sottoclasse non è l'ereditarietà. Vedremo l'eredità più avanti nel corso.
Naturalmente, la sottoclasse e l'ereditarietà sono correlate. Come vedremo, l'ereditarietà è un meccanismo di riutilizzo del codice che consente di riutilizzare facilmente il codice quando si definiscono sottoclassi. Ma la sottoclasse ha senso anche quando non si ha ereditarietà.
(In effetti, alcune lingue hanno sottoclassi, ma nessuna eredità, almeno, non l'ereditarietà come Java implementa.)
Subclassing è una proprietà di classi, ed è propriamente parte del sistema tipo di Java. La sottoclasse viene utilizzata da Java per determinare quali metodi possono essere invocati su un oggetto e per restituire un errore in fase di compilazione quando un oggetto non fornisce un determinato metodo.
Desidero sapere quali lingue hanno sottoclasse ma nessuna ereditarietà, almeno, non ereditarietà come gli strumenti Java? (Dal momento che non capisco bene i concetti, quindi se riesco a vederlo in alcune lingue effettive, ciò lo renderebbe più chiaro)
Non vedo il punto per un tale linguaggio, ma teoricamente potrebbe essere possibile. Posso solo immaginare che un linguaggio di livello inferiore (e poco conosciuto) abbia questo comportamento. – gaborsch
L'autore del corso dovrebbe aver citato almeno ** un ** esempio. In caso contrario, il test parentali fallirà nel test delle parole di donnola. Non ho mai visto una * lingua * con sottoclassi ma non ereditarietà. * Digita i sistemi *, ma non le lingue. [COM] (http://en.wikipedia.org/wiki/Component_Object_Model), ad esempio, ha un concetto di sottoclasse ma è neutrale rispetto alla lingua e non all'interno della stessa COM supporta direttamente l'ereditarietà (non credo). –
Suppongo che dipenda anche dalla tua definizione di "lingua". In quanto sopra, sto pensando "language" = "linguaggio di programmazione", ma la parola è più generale di quella. "Lingue di definizione dell'interfaccia", ad esempio, si definiscono spesso "lingue", ma riguardano esclusivamente la specifica di interfacce; non eseguono alcuna implementazione (e quindi nessuna eredità, solo sottoclassi). Ma anche l'HTML si definisce "linguaggio", mentre chiaramente non è un linguaggio * di programmazione *. –