Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Java] ereditarietà

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    ereditarietà

    Ciao a tutti!!

    ho un dubbio esistenziale !!!!

    Vorrei sapere se quando creo una classe derivata che estende(extends classeBase)una classeBase nel momento in cui ho bisogno di utilizzare un oggetto della classe derivata devo necessaramente chiamare il costruttore della super classe?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Solo se la classe base non prevede un costruttore di default (costruttore vuoto) che viene richiamato implicitamente.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    Originariamente inviato da LeleFT
    Solo se la classe base non prevede un costruttore di default (costruttore vuoto) che viene richiamato implicitamente.


    Ciao.
    Scusami ma in Java c'è sempre un costruttore anche se non viene definito dal programmatore.

    forse intendi dire che se nella classe derivata non viene definito esplicitamente un costruttore allora bisogna necessariamente richiamare il costruttore della superclasse.Giusto?

  4. #4

    costruttore

    Se dichiari un costruttore nella classe derivata , sarà lui stesso a chiamare implicitamente
    il costruttore della classe base. esempio di codice

    classe Base {

    public Base() {
    System.out.println( "costruttore classe base.");
    }



    classe Derivata extends Base {

    public Derivata () { // super(); è una chiamata implicita che puoi anche specificare
    System.out.println( "costruttore classe derivata.");
    }
    }
    **********se chiami il solo costruttore della classe derivata avrai
    OUTPUT

    costruttore classe base
    costruttore classe derivata
    Non nascondo la verit@.La filtro

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    ok grazie mille!!!

    sei stato chiarissimo!!

    un ultima cosa ma se io dichiaro un costruttore che riceve in ingresso dei parametri, java mi crea lo stesso il costruttore di default?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ci sono una serie di regole ben precise in Java:
    - Ogni classe deve avere un costruttore.
    - Se il programmatore non definisce almeno un costruttore, il compilatore crea un costruttore di "default" no-arg (senza argomenti) che fa una chiamata a super() no-arg.
    - La prima istruzione di un costruttore deve essere o super() o this() (con o senza argomenti .. dipende). Se non viene fatta una delle due chiamate, il compilatore aggiunge come default una chiamata a super() no-arg.

    Quindi l'unico caso in cui non devi preoccuparti nella sotto-classe di creare un costruttore o di crearlo ma senza specificare super() o this(), è quando la super-classe ha un costruttore no-arg (che sia quello di default o definito esplicitamente non ha importanza).

    Pertanto se la super-classe non ha un costruttore no-arg, allora nella sotto-classe devi per forza definire un costruttore e fare una chiamata super() con gli argomenti necessari.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    Perfetto!!Grandioso!!

    Grazie mille!!Tutto chiaro!

    Alla prox ciaoooo!!

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    E io cosa avevo detto?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.