Ho appreso che Java non consente l'ereditarietà multipla utilizzando abstract classes
per semplicità.
In java, dopo una buona progettazione della gerarchia delle classi, SubType
non metterebbe a rischio gli stessi prototipi di metodo o la stessa variabile, provenienti da interface
e abstract class
come tipi principali, perché abstract class
e interface
sono scoperti (ma non progettati) in base alle classi di implementazione. Immagino che questo sia il significato.
Ecco il problema del codice Java, che ha ancora problemi di ereditarietà multipli, utilizzando la parola chiave interface
:
abstract class SuperType1 {
protected int item;
}
interface SuperType2{
final float item=2.0;
}
public class SubType extends SuperType1 implements SuperType2{
public static void main(String[] args){
SubType s = new SubType();
//s.item = 2; //Compiler knows that 'item' is only mutable in 'class SuperType1', this code should not fail.
}
}
Come da programma precedente, cosa significa esattamente dire che Java omette l'ereditarietà multipla?