vuoi
o PayPal
tutte le volte che vuoi
Devo stare attento ai nomi che scelgo perchè
· potrei scegliere un nome ambiguo con cui
intendere qualcosa e qualcun altro potrebbe
scegleire lo stesso nome per intendere
qualcos'altro, allora avrei creato un conflitto a
livello semantico, per questo si usa il dominio che
in questo caso è unipv.it, allora si inverte la
lettura e i package iniziamo con IT.unipv.iii.
Immaginiamo di importare due package che mi
· creano conflitto, ad esempio importo il package
unipv e polimi, allora se entrambi contengono
studenti il mio compilatore se ne accorge e dice
che c'è un conflitto, allora o togliamo l'import
oppure usiamo il nome esteso per risolvere il
problema
Per riferirsi ad una classe appartenente ad un
· package è possibile:
riferirsi ad essa con il nome completo;
· aaa.bbb.graphics.Rectangle r = new
aaa.bbb.graphics.Rectangle();
importare la classe;
· import aaa.bbb.graphics.Rectangle;
importare l’intero package
· import aaa.bbb.graphics.*;
alcuni package standard:
· java.lang: classi base del linguaggio: Object,
· System, String, Math …
java.io: classi di I/O: FileInputStream,
· FileOutputStream
java.util: classi di utilità: Date, Random,
· ArrayList,
java.net: classi di supporto alle applicazioni
· di rete: socket, URL, …
java.applet: classe Applet, …
· java.text: classi per la formattazione di
· numeri, date, ecc: NumberFormat,
DecimalFormat, DateFormat…
java.awt: Abstract Windowing Toolkit, classi
· per la rappresentazioni di elementi di
interfaccia grafica
Visibilità
Tutto ciò che dichiaro dentro due parentesi graffe
· (anche nel caso di una if) rimane utilizzabile lì
dentro (si parla di body) e fuori, tale variabile non
potrà essere utilizzata
esempio:
if (condizione){
int i=5;
}
i++;
Questo codice mi darebbe errore poichè la
variabile i è definita solo dentro il body quindi non
può essere usata fuori
Classi e interfacce sono visibili all’interno del
· package in cui sono dichiarate, sono visibili
all’esterno del package solo se dichiarate public
Variabili e metodi sono visibili quando la loro
· classe è visibile
Sono visibili quando il loro modificatore li rende
· visibili
Progettando una classe dobbiamo pensare a due
· tipi di utenti:
Chi utilizzerà la classe per realizzare delle
· applicazioni
Questi useranno i membri public
Quelli che estenderanno la classe per
· realizzare delle sottoclassi
Questi useranno anche i protected
Andremo quindi ad assegnare public e protected
in base a ciò che ci interessa
Dichiarare una classe public final o final public è
· la stessa cosa, analogamente per protected static
o static protected
Static:
· Si applica a una classe, non a una sua
· istanza
Un membro statico viene allocato quando la
· classe viene caricata, l’inizializzazione
avviene anche al momento del caricamento
della classe.
2 modi per referenziare una variabile statica:
· Mediante una reference a qualsiasi
· istanza della classe (non buono)
Mediante il nome della classe (migliore)
·
Anche i metodi possono essere static
· Non esiste alcuna garanzia che esista
· una istanza della classe quando il
metodo static viene invocato, potrebbe
essere invocato prima che la classe in
cui è presente venga istanziata, tipo il
metodo main
I metodi non statici hanno una variabile
· implicita denominata this,che è un
riferimento all'oggetto che esegue il
metodo. Con i metodi statici, non c'è
questo.
Un metodo statico non può essere
· sovrascritto per essere non-statico. Può
essere sovrascritto per essere un altro
metodo statico.
I metodi statici non possono usare
· variabili non statiche o metodi non
statici della propria classe
Se un metodo statico deve accedere a
· una variabile non statica o chiamare a
metodo non statico, deve specificare
quale istanza della sua classe possiede
la variabile o il metodo.