Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155

    Dichiarazione metodi virtual

    Scusate, è corretto il valore "no" nella tabella di confronto interfacce / classi astratte alle entrate "dichiarazioni metodi" e
    "interfacce"?
    https://www.html.it/pag/51820/classi-astratte-in-java/
    Per fare un tavolo ci vuole un fiore.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da filips Visualizza il messaggio
    Scusate, è corretto il valore "no" nella tabella di confronto interfacce / classi astratte alle entrate "dichiarazioni metodi" e
    "interfacce"?
    https://www.html.it/pag/51820/classi-astratte-in-java/
    Precisiamo una cosa: una invocazione di metodo è "virtuale" quando la scelta della implementazione del metodo da eseguire è fatta a runtime sulla base dell'oggetto realmente istanziato.

    In Java tutti i metodi sono "virtuali", tranne i metodi static e quelli non-static che sono private o final (perché il compilatore "sa" già quale è la implementazione da invocare).
    Sotto questa luce, quindi pure i metodi di interfaccia sono "virtuali" (dimentichiamo un attimo queli default di Java 8), perché comunque si basano sul fatto che ci dovrà pur essere un oggetto che implementa il metodo della interfaccia. E quindi è comunque un dispatch "dinamico".

    Per dettagli più fini, dovrei leggere bene il JLS.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    Quindi, a parte i metodi di classe, final e private, sono di default tutti virtual perché solo a run time verrà effettuata la assegnazione della corretta implementazione corrispondente. Pertanto la tabella che ho richiamato è errata: le interfacce possono dichiarare metodi virtuali, anzi sarà esclusivamente tale ogni metodo di interfaccia, visto che i qualificatori private e final sono preclusi e anche default sembra virtual.
    Per fare un tavolo ci vuole un fiore.

Tag per questa discussione

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