Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310

    Modificatori di visibilità

    Salve a tutti,
    la domanda che sto per porre potrebbe risultare banale...
    In java i modificatori di visibilità di una classe o di un metodo sono: public, private, protected e friendly; mentre le parole chiavi "static", "abstract", "implements" ed "extends" come possono essere definite? sono anch'essi modificatori? ma non di accesso, giusto?
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Premesso che in Java non esiste alcun modificatore chiamato "friendly" (questo è un noto refuso derivante da traduzioni errate o, quantomeno, "confusionarie", in cui si tende a confondere la parola chiave "friend" del C++).

    "public", "protected", "private" (o nulla, chiamato "package access") sono modificatori di visibilità. Indicano quali classi vedono determinati membri (o classi).

    "static" è un modificatore di tipo: serve a indicare che un determinato membro è "di classe" (static, statico); se un membro non è statico allora è "di istanza". La differenza fra i due (importantissima) puoi studiarla qui.

    "implements" e "extends" non sono modificatori. Sono "direttive" e servono a specificare che una determinata classe o interfaccia "estende" o "implementa" un'altra classe o interfaccia (o insieme di interfacce).


    Ciao.
    Ultima modifica di LeleFT; 18-07-2014 a 12:11
    "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 L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da cerza Visualizza il messaggio
    In java i modificatori di visibilità di una classe o di un metodo sono: public, private, protected e friendly;
    "friendly" non esiste in Java (non so cosa intenderesti ...).
    I modificatori di accesso sono appunto tre: public/protected/private. I livelli di accesso però sono quattro: se uno dei tre modificatori di accesso non è specificato, il livello è quello di "default" ovvero package level.

    Quote Originariamente inviata da cerza Visualizza il messaggio
    mentre le parole chiavi "static", "abstract", "implements" ed "extends" come possono essere definite? sono anch'essi modificatori? ma non di accesso, giusto?
    "implements" e "extends" sono parole chiave (come if, do, while, ecc....) ... non modificatori. Mentre "static", "abstract", "volatile", "final" ecc.... sono modificatori ma non di accesso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    in realta` i modificatori sono 4, c'e` anche visibilita` package, quando viene omesso!

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da franksisca Visualizza il messaggio
    in realta` i modificatori sono 4, c'e` anche visibilita` package, quando viene omesso!
    I livelli di accesso sono 4. I modificatori di accesso sono quelle parole chiave che modificano il livello di accesso di un elemento e questi modificatori di accesso sono appunto solo 3.


    P.S. chiarisco ancora meglio: il livello di accesso è un "concetto" della teoria del linguaggio. Il modificatore di accesso è proprio la parolina chiave che si scrive nel sorgente per modificare il livello.
    Ultima modifica di andbin; 18-07-2014 a 14:00
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    confermo...un metodo (o una variabile) ha 4 modificatori di accesso.

    in realta` quello che io definisco package viene definito default (non so da quanto tempo sinceramente)
    http://it.wikibooks.org/wiki/Java/Mo...ori_di_accesso

    ovviamente e` una informazione non essenziale, visto che mediamente non si usa mai lasciare una metodo o una variabile priva di modificatore.

    Il fatto che non ci sia la parolina prima, non vuol dire che sia un errore, come potrebbe esserlo metterne 2

  7. #7
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    Grazie mille a tutti

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Scusate se continuo ma questa sera appena arrivato a casa ero davvero curioso di andare a rileggere i validissimi libri che ho, che poi sono quelli con cui mi sono "formato" su Java.

    In particolare mi ricordavo di una frase abbastanza dettagliata sul libro "SCJP Sun Certified Programmer for Java 5 Study Guide" - McGraw-Hill. E l'ho ritrovata, è a pagina 12 nel primo capitolo:

    Access control in Java is a little tricky because there are four access controls (levels of access) but only three access modifiers. The fourth access control level (called default or package access) is what you get when you don't use any of the three access modifiers.

    Poi ho guardato sul mitico "The Java Programming Language, 4th Edition" - Addison-Wesley. Non mi ricordavo qualcosa di preciso ma ho trovato una frase a pagina 48 che in effetti dice un pochino diversamente:

    To control access from other classes, class members have four possible access modifiers:
    [elenca i 4 casi, compreso package]

    E quando parla di quello package dice: Members declared with no access modifier are accessible [....]


    Per la mia "cultura" su Java, ritengo più fine e appropriata la spiegazione sul libro SCJP5 (che è quella che mi ricordavo!). La descrizione sul Java Programming Language forse non è risultata particolarmente fine.

    Comunque, amici del forum ... lo so, sono davvero "finezze" queste. Va bene così.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    pero` sono le finezze che rendono il nostro lavoro meraviglioso!!!

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.