2014-04-16 14 views
8

sto cercando di rispondere alla seguente domanda:Quali membri non sono ereditati in una classe figlia?

una classe figlia non avrebbe ereditato alcuni membri della classe genitore. Nome tre tali membri.

So che i membri privati ​​non sono ereditati dalle classi figlio e i membri predefiniti non sono ereditati al di fuori del pacchetto. Qualcuno può completare la risposta?

Modificato: - credo che membri statici sono ereditati in base al di sotto dimostrazione

public class sup { 
    public static void main(String agr[]){ 
    } 

    protected static int staticInt=0; 
    protected final int finalInt=3; 
    protected int protectedInt=0; 
    public String publicString = ""; 
    private int privateInt=8; 
} 

class sub extends sup{ 
    public void del(){ 
     staticInt=1; 
     staticInt=finalInt; 
    } 
} 

risposta

1

Nessuno-Risposta per creare un caso per termini utilizzo.

I membri che sono visibili nella classe figlio viene risposto sopra. I membri sono sia campi che metodi (ciascuno con il proprio spazio dei nomi).

Inheritance come parte dell'istanza bambino, è un'altra questione: anche invisibili privati ​​ membri sono "ereditate" in quanto tale. I membri statici sono parte dell'istanza della classe e non sono ereditati (non possono essere sovrascritti).Tutti i metodi final non possono essere sostituiti.

I costruttori discutibili non sono ereditati; devi definire nuovamente la stessa firma in un nuovo costruttore figlio.

Altre dichiarazioni in una classe potrebbero essere definizioni di classe. Lì la parola chiave static ha un significato diverso, e si possono fare dichiarazioni ovvie sulla visibilità/ereditarietà. Per esempio rispetto alle classi interne non statiche, che hanno un <outer-class>.this (nozione ricorsiva).

2

Costruttori e membri statici

+1

Puoi spiegare perché i membri statici non sono ereditati? Immagino che sia una questione terminologica, ci sono alcune sottili differenze tra i metodi statici e di istanza come discusso qui: http://docs.oracle.com/javase/tutorial/java/IandI/override.html I membri statici –

+0

sono ereditari. Lo collaudo utilizzando il programma di esempio – Roledenez

+0

Stai parlando di visibilità? l'ereditarietà e la visibilità sono due cose diverse. i membri statici possono essere visibili ma non possono ignorarli. – niiraj874u

3

da Oracle Java Documentazione per Inheritance:

Una sottoclasse eredita tutti i membri (campi, metodi e classi nidificate ) dalla sua superclasse. Costruttori non sono membri, in modo da non vengono ereditate dalle sottoclassi, ma la costruzione della superclasse possono essere richiamati dalla sottoclasse

Quindi penso che ti manca costruttori qui. Anche i metodi statici e i campi non vengono ereditati, quando vengono riscritti in sottoclassi, riutilizzano solo la firma e hide l'implementazione del metodo/campo nella classe genitore.

Per Trasmissione di campi e metodi statici, fare riferimento a questa discussion come steted da Duncan, e questa grande esercitazione Overriding vs Hiding

+1

Vedi anche questa discussione: [I metodi statici sono ereditati in Java?] (Http://stackoverflow.com/questions/10291949/are-static-methods-inherited-in-java). Questo non è d'accordo con il tuo ultimo paragrafo. –

+0

@Duncan Grazie amico !! Ho appena scoperto la differenza tra Overriden e Hidden :) – mounaim

6

da JLS for Class Member

Costruttori, inizializzatori statici e inizializzatori istanza non sono membri e quindi non sono ereditati.

+2

Ding ding ding! Infine, la risposta corretta e anche dal JLS :-) –

+1

@Duncan o maledizione! :) questa è davvero la * risposta * completamente corretta. come mi sono perso ... +1 – Eugene

0

non è possibile ereditare un campo privato e costruttore. non puoi ereditare un costruttore perché non sono membro di super-classe. puoi invocare un modulo costruttore di super classe è sottoclasse. e puoi anche accedere a un membro privato di super classe, accessibile tramite il metodo pubblico o protetto di super classi.

+0

-1 I membri statici sono ereditati. Vedi le discussioni sotto le altre risposte. –

Problemi correlati