Bên c nh đĩ, Java cịn cung c p thêm nhi u gĩi đ phát tri n các ng d ng và các applet c a b n. N u b n khơng khai báo các gĩi trong đo n mã c a b n, thì các l p và các giao di n c a b n sau khi k t thúc s n m trong m t gĩi m c đnh mà khơng cĩ tên. Thơng th ng, gĩi m c
đnh này ch cĩ ý ngh a cho các ng d ng nh ho c các ng d ng t m th i, nh là các ng d ng mà b n v a m i b t đ u đ phát tri n sau này. Khi b n b t đ u vi c phát tri n cho m t ng d ng l n, b n cĩ khuynh h ng phát tri n m t s các l p. B n c n t ch c các l p đĩ trong các th m c khác nhau đ d dàng truy c p và v n d ng. làm đ c đi u này, b n ph i đ t chúng vào các gĩi đã đ t tên.
Ph n l n v vi c làm v i các gĩi là b n cĩ đ c quy n đ s d ng các tên l p gi ng nhau, nh ng b n ph i đ t chúng vào các gĩi khác nhau.
4.4.1 T o m t gĩi
Gĩi là m t ph ng th c h u d ng đ nhĩm các l p mà tránh đ c các tên trùng nhau. Các l p v i nh ng tên gi ng nhau cĩ th đ t vào các gĩi khác nhau. Các l p đ c đ nh ngh a b i ng i s d ng c ng cĩ th đ c nhĩ l i trong các gĩi.
Các b c sau đây cho phép t o nên m t gĩi do ng i dùng đnh ngh a:
Khai báo gĩi b ng cách s d ng cú pháp thích h p. o n mã ph i b t đ u v i khai báo gĩi. i u này ch ra r ng l p đ c đnh ngh a trong t p tin là m t ph n c a gĩi xác
đnh.
package mypackage;
S d ng phát bi u import đ nh p các gĩi chu n theo yêu c u.
import java.util.*;
Khai báo và đnh ngh a các l p s n m trong gĩi đĩ. T t c các thành ph n c a gĩi s là public, đ cĩ th đ c truy c p t bên ngồi. Máy o Java (JVM) gi l i track (rãnh ghi) c a t t c các ph n t n m trong gĩi đĩ.
package mypackage; //khai báo gĩi import java.util.*;
public class Calculate //đnh ngh a m t l p {
int var;
{ … var = n;
//các ph ng th c //…
public class Display //đnh ngh a m t l p {
…//Các ph ng th c
} } }
L u các đnh ngh a trên trong m t t p tin v i ph n m r ng .java, và d ch các l p
đ c đnh ngh a trong gĩi. Vi c d ch cĩ th th c hi n v i ch c n ng “-d”. Ch c n ng này t o m t th m c trùng v i tên gĩi, và đ t t p tin .class vào th m c đ c ch rõ.
javac –d d:\temp Calculate.java
N u khai báo gĩi khơng cĩ trong ch ng trình, l p ho c giao di n đĩ s k t thúc trong m t gĩi m c đ nh mà khơng cĩ tên.Nĩi chung, gĩi m c đnh này thì ch cĩ ngh a cho các ng d ng nh ho c t m th i.
Hãy ghi nh các đi m sau đây khi b n khai thác các gĩi do ng i dùng đnh ngh a trong các ch ng trình khác:
Mã ngu n c a các ch ng trình đĩ ph i t n t i trong cùng m t th m c v i gĩi đ c
đnh ngh a b i ng i s d ng.
cho các ch ng trình Java khác s d ng đ c các gĩi đĩ, hãy khai báo chúng vào
đo n mã ngu n.
nh p m t l p ta dùng:
import java.mypackage.Calculate;
nh p tồn b m t gĩi, ta làm nh sau:
import java.mypackage.*;
T o m t tham chi u đ n các thành ph n c a gĩi. Ta dùng đo n mã đ n gi n sau:
import java.io.*;
import mypackage.Calculate; class PackageDemo{
public static void main(String args[]){ Calculate calc = new Calculate(); }
Core Java
N u phát bi u import cho gĩi đĩ khơng đ c s d ng, thì tên l p ph i đ cs d ng v i tên gĩi c a nĩ sao cho phù h p v i ph ng th c trong l p đĩ. Cú pháp nh sau:
mypackage.Calculate calc = new mypackage.Calculate();
4.4.2 Thi t l p đ ng d n cho l p (classpath)
Ch ng trình d ch và ch ng trình thơng d ch tìm ki m các l p trong th m c hi n hành, và t p tin nén (zip) ch a các t p tin class JDK. i u này cĩ ngh a các t p tin class JDK và th m c ngu n t đ ng thi t l p classpath cho b n.Tuy nhiên, trong m t vài tr ng h p, b n c n ph i t thi t l p classpath cho b n.
Classpath là m t danh sách các th m c, danh sách này tr giúp đ tìm ki m các t p tin class t ng ng. Thơng th ng, ta khơng nên thi t l p mơi tr ng classpath m t th i gian dài. Nĩ ch thích h p khi thi t l p CLASSPATH đ ch y ch ng trình, nh khi ta thi t l p đ ng d n cho vi c th c thi hi n th i.
javac –classpath c:\temp Packagedemo.java
Th t c a các m c trong classpath thì r t quan tr ng. Khi b n th c thi đo n mã c a b n, mày o Java s tìm ki m các m c trong classpath c a b n gi ng nh th t đã đ c p, cho đ n khi nĩ tìm th y l p c n tìm.
Ví d c a m t gĩi Ch ng trình 4.3
Package mypackage; Public class calculate {
public double volume(double height, double width,double depth) {
return (height*width*depth); }
public int add(int x,int y) {
return (x+y); }
public int divide(int x,int y) { return (x/y); } } s d ng gĩi này, b n c n ph i: Khai báo l p đ c s d ng. Khai báo tồn b gĩi.
B n c n d ch t p tin này. Nĩ cĩ th đ c d ch v i tu ch n –d, nh đĩ, nĩ t o m t th m c v i tên c a gĩi và đ t t p tin .class vào th m c này.
javac –d c:\temp calculate.java
Ch ng trình biên d ch t o m t th m c đ c g i là “mypackage” trong th m c temp, và l u tr t p tin calculate.class vào th m c này.
Ví d sau bi u di n cách s d ng m t gĩi:
Ch ng trình 4.4
import java.io.*;
import mypackage.calculate; Class PackageDemo{
public static void main(String args[]){ Calculate calc = new calculate(); int sum = calc.add(10,20);
double vol = calc.volume(10.3f,13.2f,32.32f); int div = calc.divide(20,4);
System.out.println(“The addition is: ”+sum); System.out.println(“The Volume is: ”+vol); System.out.println(“The division is: ”+sum); }
}
N u b n s d ng m t l p t m t gĩi khác, mà khơng s d ng khai báo import cho gĩi đĩ, thì khi đĩ, b n c n ph i s d ng tên l p v i tên gĩi.
Mypackage.calculate calc = new mypackage.calculate( );
4.5 Gĩi và đi u khi n truy xu t
Các gĩi ch a các l p và các gĩi con. Các l p ch a d li u và đo n mã. Java cung c p nhi u m c đ truy c p thơng qua các l p, các gĩi và các ch đnh truy c p. B ng sau đây s tĩm t t quy n truy c p các thành ph n c a l p:
public protected No modifier private
Same class Yes Yes Yes Yes
Same packages subclass
Yes Yes Yes No
Same package non- subclass
Yes Yes Yes No
Different package s bclass
Core Java subclass Different package non-subclass Yes No No No B ng 4.2: Truy c p đ n các thành ph n c a l p. 4.6 Gĩi java.lang
Theo m c đnh, m i ch ng trình java đ u nh p gĩi java.lang. Vì th , khơng c n ph i khai báo m t cách rõ ràng gĩi java.lang này trong ch ng trình.