Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Chiamata al costruttore (this o super)

    Ciao, piccola domanda !!! Quando istanzio un'oggetto automaticamente avviene la chiamata al costruttore... Ma se per assurdo mi ritrovo due classi.


    Cane, Animale

    Cane extends Classe e poi istanzio un'oggetto con Cane oggetto = new Cane(); la prima chiamata al costruttore è quella di Cane o della superclasse Animale?...

    Insomma avviene la chiamata col this o col super?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Prima viene chiamato il costruttore della superclasse.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Chiamata al costruttore (this o super)

    Originariamente inviato da Diamante87
    Insomma avviene la chiamata col this o col super?
    No ... alt, non hai affatto chiare le questioni sui costruttori!!!

    Se Cane estende Animale e tu istanzi un oggetto di Cane, il primo costruttore che viene eseguito è quello di Cane. La primissima istruzione di un costruttore deve tassativamente essere una invocazione di un altro costruttore con this() o super() (con o senza argomenti ... dipende). Se non metti tu esplicitamente uno di questi due, il compilatore mette per default un super() senza argomenti.
    Anche se tu invocassi con this() un altro costruttore di Cane, ad un certo punto ci deve per forza di cose essere un costruttore con super(), perché comunque in ogni caso deve essere invocato il costruttore della super-classe. E così di seguito va all'in su fino al costruttore di Object() (che per la cronaca non fa nulla), dopodichè si ritorna indietro fino a Cane, dove il costruttore continua la sua esecuzione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4

    ...

    Cioè se io istanzio un oggetto di Cane senza aver messo un costruttore espliticamente, il compilatore ne mette uno implicitamente senza parametri. La prima chiamata che avviene è il costruttore di Cane, poi di Animale e infine di Object giusto?

    Mentre se ho due costruttori all'interno di Cane uno con parametri e uno senza parametri il costruttore che viene chiamato è sempre quello senza parametri

    giusto?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: ...

    Originariamente inviato da Diamante87
    Cioè se io istanzio un oggetto di Cane senza aver messo un costruttore espliticamente, il compilatore ne mette uno implicitamente senza parametri.
    Sì, se il programmatore non scrive esplicitamente almeno 1 costruttore, il compilatore ne mette uno di "default" che ha le seguenti caratteristiche:
    - Ha lo stesso livello di accesso della classe (se la classe è public il costruttore è public, ecc...)
    - Senza argomenti
    - Contiene una invocazione super() senza argomenti

    Originariamente inviato da Diamante87
    La prima chiamata che avviene è il costruttore di Cane, poi di Animale e infine di Object giusto?


    Originariamente inviato da Diamante87
    Mentre se ho due costruttori all'interno di Cane uno con parametri e uno senza parametri il costruttore che viene chiamato è sempre quello senza parametri
    No ... dipende da cosa passi al costruttore!!! Se fai new Cane() viene invocato il costruttore di Cane senza argomenti, se fai new Cane(qualcosa) viene invocato il costruttore di Cane che accetta quel "qualcosa".

    Insomma... la scelta del costruttore in base agli argomenti è fatta secondo la stessa identica logica usata per la scelta di un metodo in base agli argomenti!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6

    ...

    Grazie ^^ ora è tutto chiaro...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.