Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136

    [java]Package e modificatori di accesso

    Salve,
    studiando i package in java qualcosa non mi è chiaro.Prima di tutto vorrei sapere cosa si intende per package.Se non ho capito male tutti i file .java che si trovano in una directory del genere ....../com/miosito/.Vero?Secondo:se una proprietà non ha modificatore di accesso (private,public,protected) la proprietà stessa è visibile in tutto il package.Quindi se ho due classi in due files diversi file1.java e file2.java dove ho due classi pubbliche file1 e file2 e in file1 ho una proprietà propr1 a questa è possibile accederci anche da file2.Mi sbaglio?Segue esempio.


    file1.java
    codice:
    public class file1{
    String propr1="";
    public file1(){
    }
    }
    file2.java
    codice:
    public class file2{
    public file2(){//costruttore
    propr1="Costruttore file2"
    System.out.println(propr1);
    }
    }
    I due file si trovano in ...../com/miosito/file1.java ...../com/miosito/file2.java.Quando compilo ottengo un errore.chiedo il vostro aiuto.Saluti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: [java]Package e modificatori di accesso

    Originariamente inviato da and77
    Salve,
    studiando i package in java qualcosa non mi è chiaro.Prima di tutto vorrei sapere cosa si intende per package.Se non ho capito male tutti i file .java che si trovano in una directory del genere ....../com/miosito/.Vero?
    http://docs.oracle.com/javase/tutori...age/index.html

    Devi anche mettere l'istruzione package secondo le modalità indicate.

    Originariamente inviato da and77 Secondo:se una proprietà non ha modificatore di accesso (private,public,protected) la proprietà stessa è visibile in tutto il package.Quindi se ho due classi in due files diversi file1.java e file2.java dove ho due classi pubbliche file1 e file2 e in file1 ho una proprietà propr1 a questa è possibile accederci anche da file2.Mi sbaglio?Segue esempio.


    file1.java
    codice:
    public class file1{
    String propr1="";
    public file1(){
    }
    }
    file2.java
    codice:
    public class file2{
    public file2(){//costruttore
    propr1="Costruttore file2"
    System.out.println(propr1);
    }
    }
    I due file si trovano in ...../com/miosito/file1.java ...../com/miosito/file2.java.Quando compilo ottengo un errore.chiedo il vostro aiuto.Saluti.
    Ciò che hai detto a parole prima dell'esempio è corretto, ma non corrisponde al codice, che è sbagliato.

    A parte la mancanza della suddetta istruzione package, la prima classe va bene, la seconda non ha senso: stai tentando di accedere a propr1, che è un campo della classe file1, senza aver creato nessun oggetto file1.

    Con un esempio concreto magari si capisce meglio, questo in pratica è ciò che hai fatto:

    codice:
    package prova;
    
    class Macchina
    {
    
      int cavalli;
    
    }
    codice:
    package prova;
    
    class AltraClasse
    {
    
      AltraClasse()
      {
        System.out.println(cavalli);
      }
    
    }
    Vuoi stampare i cavalli, ma i cavalli di chi?

    I campi sono le caratteristiche degli oggetti, quindi se non è stato creato nessun oggetto, di chi vuoi guardare le caratteristiche?
    Inoltre, per accedere ad un campo di una classe quando si è fuori da questa classe, bisogna anteporre l'identificatore dell'oggetto e l'operatore "dot", il "punto".

    Così dovrebbe compilare:



    codice:
    package prova;
    
    class AltraClasse
    {
    
      AltraClasse()
      {
        Macchina macchina = new Macchina();
        System.out.println(macchina.cavalli);
      }
    
    }
    Poi ci sono le variabili statiche, che sono tutta un'altra cosa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Perfetto.Chiarissimo.L'istruzione package l'ho dimentica ma nei files originali c'è.Grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    per la prossima volta, quando dici hai errore posta anche lo stacktrace, l'errore, altrimenti dire ho errore equivale a non dire niente
    RTFM Read That F*** Manual!!!

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.