Buonasera a tutti, volevo chiedere il vostro aiuto sperando possiate risolvere un dubbio che ho da diversi giorni circa il problema dell'ereditarietà multipla in Java. Vi espongo sinteticamente il testo di una prova di esame del corso di Programmazione orientata agli oggetti che sto attualmente seguendo: la prova chiede che venga realizzata un'applicazione Java che sia in grado di memorizzare su un apposito file delle informazioni su delle persone. In realtà, il testo afferma che esistono persone "semplici", studenti, lavoratori e studenti lavoratori, specificando che ogni persona possiede delle proprietà quali nome, cognome, indirizzo..., mentre uno studente si differenzia dal lavoratore perché il primo ha una variabile matricola, a cui è associato il metodo getter getMatricola(), ed un hashmap che funge da libretto universitario (sulla cui gestione, in verità, non mi soffermo non essendo attualmente questo il problema), mentre il secondo ha solamente un attributo salario con un metodo getSalario() associato.
Il mio dubbio è relativo essenzialmente alla modellazione, ed in effetti la via più immediata sarebbe quella di creare una classe StudenteLavoratore che estende sia la classe Studente che la classe Lavoratore, ma ciò è impossibile (in Java). Allora ho tentato di risolvere l'arcano nel modo seguente: dato che ogni Studente, ogni Lavoratore ed ogni StudenteLavoratore è una Persona, creo una classe Persona che contempli i dati comuni a ciascun tipo di agente, dopodiché definisco una classe Studente, derivata da Persona, a cui aggiungo tutte le sue caratteristiche, ed un'interfaccia che chiamo IWorker, contemplante solo il metodo getSalario(); successivamente, definisco la classe Lavoratore come estensione di Persona che implementa IWorker, ed infine creo StudenteLavoratore come classe derivata di Studente implementante IWorker.
Ora, facendo in questo modo, nella classe StudenteLavoratore ho accesso all'hashmap e alla matricola, ma ho necessità di ridefinire una variabile salario, mentre io vorrei che gli attributi tipici di Studente e di Lavoratore venissero "inseriti" automaticamente in StudenteLavoratore, dando l'impressione che si tratti di una vera e propria ereditarietà multipla di classe.
Come potrei risolvere questo problema?