/ / Ereditarietà nel linguaggio Java: java, ereditarietà

Ereditarietà nel linguaggio Java: java, ereditarietà

Diciamo che java segue un singolo modello di ereditarietà, ad esempio una classe Java può estendere solo una classe al massimo. e quindi dire che ogni classe java è ereditata dalla classe Object.

Supponiamo che ci siano due classi A e B. Sia A che B si estendono da Object. Ora supponiamo che A si estenda B. Non implica che A abbia ereditarietà multipla (A sta ereditando sia da B che da oggetto di classe)?

risposte:

9 per risposta № 1

Osserva la differenza tra ereditarietà transitiva (C eredita direttamente da B e transitivamente da A):

inserisci la descrizione dell'immagine qui

e ereditarietà multipla (C che eredita sia da A che da B):

inserisci la descrizione dell'immagine qui

Tutto è appena aggiunto, tranne i metodi conla stessa firma, che è sovrascritta. Vengono aggiunte anche le variabili dichiarate con lo stesso nome, che si dice siano "nascoste" ma che possono comunque essere lette usando il cast o la parola chiave super se è il genitore immediato.


4 per risposta № 2
Excepting Object, which has no superclass, every class has one and |
only one direct superclass (single    inheritance). In the absence of any
other explicit superclass, every class is implicitly a subclass of Object.

aa

nella tua domanda A directly inherit B e Object class è ereditato da B non da A..Questo è chiamato eredità transitiva


3 per risposta № 3

È possibile avere una catena di ereditarietà, non è un'eredità multipla. Non puoi avere una classe che eredita da più di una classe Al tempo.

Proibito dalla lingua:

class A extends B, C
{}

2 per risposta № 4

Eredità multipla: (non supportato da Java)

La classe A estende l'oggetto

La classe B estende l'oggetto

La classe C si estende A, B

 Object
/
/  
/    
A      B     (Not supported by Java)
     /
   /
 /
C

Ereditarietà multilivello / transitivo: (supportato da Java)

La classe B estende l'oggetto

Classe A extedns B

 Object
|
|
|
B        (Supported by Java)
|
|
|
A

1 per risposta № 5

Solo una classe Java direttamente ereditare da una classe. In questo caso, A doesn "t direttamente ereditare da Object, solo da A.

Stai solo chiedendo dal punto di vista della terminologia, o ce ne sono alcuni comportamento siete interessati a?


1 per risposta № 6

L'oggetto A estende l'oggetto B che estende l'oggetto. Non è un'eredità multipla, è una gerarchia


1 per risposta № 7

I problemi principali con l'ereditarietà multipla sono l'ambiguità, quando due classi definiscono lo stesso metodo e sono contemporaneamente sovrascritte e problema di diamante. Java non ne soffre, perché consentesovrascrivere solo una singola classe. Questo ovviamente si riferisce alla sovrascrittura diretta e non si occupa di gerarchie di ereditarietà: questo tipo di ereditarietà (A sovraordinata B, B sovrascritta e così via) non è affetto da alcun problema.


1 per risposta № 8

In Java, ogni classe può direttamente estendere solo da uno classe genitore. Quindi, B si estende da Object e A si estende da B, xor entrambi A e B si estendono da Object.

Supponiamo che entrambi siano veri allo stesso tempo - questo non è possibile in Java.

Se B si estende da Object e A si estende da B, allora sì, A eredita da Object, ma c'è ancora un singolo genitore per ogni classe:

class Object
|
+-- class B
|
+-- class A

In altre parole, Java non supporta l'ereditarietà multipla.


0 per risposta № 9

Java non ti consente di estendere più di 1super-class. Tuttavia, una classe può implementare più interfacce. Puoi creare una struttura di interfacce e classi astratte che consentono di estendere più di 1 classe. Buona fortuna!