? Sviluppatori Java progettato da zero per agire come un linguaggio di programmazione orientato agli oggetti completo . A causa di questo , i concetti integrati per la programmazione orientata agli oggetti diventano molto importante nella funzionalità di base di Java . In particolare , i concetti di ereditarietà delle classi ( e le problematiche che sorgono classe form eredità) sono preoccupazioni fondamentali per il programmatore Java . Uno di questi problemi , l'ereditarietà multipla, può essere aggirato con una comprensione di come funziona l'ereditarietà , e come utilizzare interfacce Java . OOP ed ereditarietà
Object Oriented Programming utilizza il concetto di ereditarietà per estendere le funzionalità degli oggetti . Considerare quando un programmatore crea un oggetto ; lei può poi scoprire che lei deve creare un oggetto molto simile con solo lievi differenze ( forse per estendere la funzionalità dell'oggetto precedente in un nuovo contesto ) . E 'qui che entriamo in gioco l'ereditarietà Un oggetto che un programmatore "deriva " da un altro oggetto "base" eredita i metodi e le variabili di quella classe , e possono quindi aggiungere ulteriori funzionalità ad esso ( come nel seguente esempio Java ) :
class sfera pubblica {
raggio public int ;
}
classe sfera pubblica si estende Sphere {
color corda pubblico ; //sfera aggiunge la variabile "colore" , ma anche utilizza il "raggio " variabile
}
ereditarietà multipla
Ad un certo punto , un programmatore potrebbe diventare tentazione per derivare una singola classe da più classi . Questo è noto come " l'ereditarietà multipla " e mentre apparentemente utile , può causare problemi , come ad esempio il famigerato " problema di diamante . " Il problema diamante si verifica quando due classi ereditano dalla stessa classe ( come la classe B e C che deriva dalla classe A ) , mentre un'altra classe (D ) eredita da entrambi B e C. Quando viene creato un oggetto di D , il sistema tratta come un tipo della classe base (classe " Ball" è una "sfera ", per esempio ) . Nel problema di diamante , il sistema non può determinare cosa decisamente di classe D è ( sia essa tipo ABD o tipo ACD ? ) Che causa problemi .
Java e Ereditarietà multipla
a causa dei problemi con l'ereditarietà multipla , Java non permette l'ereditarietà multipla . Tuttavia, in realtà derivanti classi di più classi di base può essere realizzato in maniera sicura attraverso l'utilizzo di " interfacce ". Un'interfaccia è simile a una classe , eccetto che definisce soltanto la struttura della classe ma non il codice effettivo . Una classe base che implementa un'interfaccia non necessariamente " ereditare " la funzionalità dell'interfaccia : promette solo usare la sua struttura . Perché una classe che implementa una interfaccia non eredita da un'altra classe ( e questo non è un tipo di classe base ) , quindi il programmatore può implementare più interfacce utilizzando la stessa classe
Esempio : . Ereditarietà e interfacce
l'esempio seguente mostra la differenza tra ereditarietà e un'interfaccia . È importante sottolineare che una classe che eredita da un altro accesso guadagni alla classe di base perché diventa essenzialmente un tipo di tale classe ( come in " palla " e classi "sfera" ) . Una classe che implementa un'interfaccia promette solo per attuare la struttura dell'interfaccia : non è un tipo di interfaccia che :
interfaccia di base {
int Doppia Camera ( ) ; //Avviso: no codice attuale viene definito nell'interfaccia
}
classe B pubblica implementa di base {
public int a;
public int Doppia Camera ( ) //classe B deve definire la " Doppia Camera ( ) " metodo per implementare "Basic"
{return a * 2; } }