2010-10-15 18 views
5

Mi chiedevo se c'è un numero finito di tempo in cui posso ereditare una classe? O quali sono i fattori che possono influenzare questo?Qual è il livello massimo di ereditarietà in java?

+1

Spero che tu non raggiunga mai un tale limite (se esiste) :) – Bozho

+1

Perché c'è una richiesta per chiudere questo? Non è una domanda vera? –

risposta

13

Leggi this (Il suo divertimento)

The system is out of resources. 
Consult the following stack trace for details. 
java.lang.StackOverflowError 
+3

+1 per alcune ricerche interessanti, rispondi a circa 60 livelli per compilare effettivamente * e in esecuzione * per coloro che vogliono conoscere la risposta prima di fare clic sul collegamento – Brian

+0

Esperimento interessante, ma la risposta di @Jonathans è ancora vera: per tutte le applicazioni pratiche lì non c'è limite. –

+0

bel articolo ... –

4

Per tutte le applicazioni pratiche, gli alberi di ereditarietà in Java possono raggiungere dimensioni infinite.

3

Non esiste un limite specifico nelle specifiche.

Probabilmente esiste un limite dipendente dall'implementazione, se solo nel senso che sei limitato dalla memoria disponibile (le informazioni sulla classe devono essere archiviate in qualche luogo dopo tutto).

E se mai raggiungi quel limite, il tuo design è rotto comunque (tutto ciò che va nelle doppie cifre è sicuramente un odore di codice).

0

Se una classe è final, non è possibile ereditarla.

Oltre a ciò, è possibile avere alberi a eredità infinita. Puoi anche infinitamente implement anche molte classi di interfaccia.

+1

L'implementazione di molte interfacce consente di ottenere alberi ad ampiezza ereditaria, "tuttavia, non per quelli profondi. –

+0

In realtà no - vedi la risposta di @ pinichi. –

+0

@Joachim Sauer, vero, stavo solo elaborando che si può andare entrambi immensamente nell'ereditarietà e anche infinitamente larghi .... –

0

non c'è limite specificato. Per tutti gli scopi pratici, è infinito.

Problemi correlati