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.