Mi sto preparando per un test e faccio domande pratiche, questo in particolare non sono sicuro di averlo fatto correttamente:
Ci viene fornito un diagramma UML molto semplice per dimostrare l'ereditarietà: spero che questo sia chiaro, mostra che W eredita da V e così via:
|-----Y
V <|----- W<|-----|
|-----X<|----Z
e questo codice:
public X method1(){....}
method2(new Y());
method2(method1());
method2(method3());
Le domande e le mie risposte:
-
Q: quali tipi di oggetti potrebbero restituire il metodo1?
A: X e Z, poiché la definizione del metodo include X come tipo di ritorno e dato che Z è un tipo di X è OK per restituire entrambi.
-
Q: Quale potrebbe essere il tipo di parametro di method2?
A: Poiché il metodo2 nel codice accetta Y, X e Z (come ritorno da method1), il tipo di parametro deve essere V o W, poiché Y, X e Z ereditano da entrambi di questi.
-
Q: Cosa può restituire il tipo di metodo3 essere?
A: il tipo di ritorno del metodo3 deve essere V o W in quanto ciò sarebbe coerente con la risposta 2.