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 № 1Osserva la differenza tra ereditarietà transitiva (C eredita direttamente da B e transitivamente da A):
e ereditarietà multipla (C che eredita sia da A che da B):
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.
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!