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

    [JAVA] Binding statico e dinamico

    Ciao a tutti, questa volta i miei problemi ruotano intorno al binding di variabili e metodi.
    Per binding si intende il collegamento tra una chiamata del metodo e il corpo del metodo, e si dice statico se avviene a tmepo di compilazione e dinamico, a tempo di esecuzione e dipende dall'oggetto ricevuto.

    Premesso questo (che spero essere corretto), devo scrivere un programma che verifica che il binding
    a. delle variabili di istanza e di super è statico,
    b. l'overloading è statico,
    c. quello dei metodi è dinamico.

    Quello che non riesco a capire è come posso scrivere un programma che fa vedere come ad esempio la scelta del metodo (overloading) avviene staticamente?

    Esempio:
    codice:
    class Overloading {
     void f1(char x) {System.out.println("f1: char");  }
     void f1(float x) {System.out.println("f1: float");  }
    
    }
    e nel main:
    codice:
     Overloading test = new Overloading;
     test.f1('c');  //stampa f1:char
     test.f1(3.4); //stampa f1:float

    Bene, in questo modo ho fatto vedere l'overloading... ma come faccio a mostrare che la scelta è stata statica, anziché dinamica???

    Forse in questo modo non va bene...
    Grazie a chi mi risponderà.

    -LiLy-
    Altro non ci apparìa che il cielo e l'onda Quando il Saturnio sul veloce legno Sospese in alto una cerulea nube
    Sotto cui tutte intenebrarsi l'acque

  2. #2
    ..Qualcuno ha idea di come mostrare quando il binding è statico?
    Altro non ci apparìa che il cielo e l'onda Quando il Saturnio sul veloce legno Sospese in alto una cerulea nube
    Sotto cui tutte intenebrarsi l'acque

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    153
    È statico quando il metodo è private,static ,final oppure è un costruttore allora il compilatore sa esattamente quale metodo chiamare.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da prog
    È statico quando il metodo è private,static ,final oppure è un costruttore allora il compilatore sa esattamente quale metodo chiamare.
    Non è proprio così.

    A tempo di compilazione viene fatta la scelta di quale versione (tra quelle eventualmente in overload) del metodo (o costruttore) invocare basandosi solo sul tipo del reference e sugli argomenti passati. È il compilatore che determina quindi quale signature utilizzare per il metodo/costruttore. Una volta fatta tale scelta, la signature è quindi "inchiodata".

    Mentre invece, per i metodi di istanza, è la implementazione che viene scelta a runtime basandosi sull'oggetto realmente istanziato sul heap.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.