Package là gì?
Package (gói) trong java là một nhóm các loại class (lớp), interface (giao diện) và gói con tương tự nhauPackage trong Java được chia thành hai loại:
- Package (gói) đã được dựng sẵn
- Package (gói) do người dùng định nghĩa
Package trong Java
Có rất nhiều gói được dựng sẵn như: lang, AWT, java, javax, swing hay util, sql và net, io,…Package người dùng tự định nghĩa:
Cú pháp Package do người dùng định nghĩa
Những điều cần biết về Package
- Quy ước cách đặt tên các Package: Các Package được đặt tên theo thứ tự ngược lại với tên miền, nghĩa là org.geeksforgeeks.practice
Ví dụ, trong các trường đại học thường quy ước được đề xuất là college.tech.ee, college.tech.cse hay college.art.history,…
- Các package khác nhau nhưng có thể có class trùng tên nhau. Nếu package khác nhau nhưng lại có các class trùng tên nhau thì khi sử dụng bắt buộc bạn phải import đầy đủ tên package và cả tên class
- Cách truy cập vào các thành phần trong package: private, protected, public, default
Có 4 cách để có thể truy cập vào package là private, protected, public, default
- Private: Chỉ có thể truy cập bởi chính class đấy
- Protected: Được truy cập bởi các Class trong cùng một package, các class chính là sub- class của class này
- Public: Có thể được truy cập bằng tất cả các class dù ở trong cùng một package hay khác package
- Default: Được truy cập bởi class trong cùng package
- Thêm một lớp vào một gói: Bạn có thể thêm nhiều lớp vào một gói bằng cách sử dụng tên gói ở phần đầu chương trình và lưu nó ở trong thư mục gói. Bạn cần một tệp java mới để có thể xác định một lớp công khai, nếu không bạn có thể thêm một lớp mới vào tệp hiện có và chỉ cần biên dịch lại nó
- Các gói con: Các gói nhỏ bên trong một gói khác được gọi là subpackage hoặc package con. Chúng không được phép nhập theo mặc định mà phải nhập một cách rõ ràng. Đặc biệt, các thành viên trong một gói con thì không có quyền truy cập, nghĩa là chúng được coi như các gói khác nhau đối với các chỉ định về truy cập mặc định và được bảo vệ
Bạn đọc tham khảo thêm:
Tuyển lập trình viên python lương cao chất lượng hấp dẫn
Việc làm lập trình php lương cao chất lượng hấp dẫn
Việc làm IT lương cao chất lượng hấp dẫn
Những lợi thế của việc sử dụng Package là gì?
- Tổ chức các file (class, interface): việc tổ chức này theo một hệ thống giúp có thể dễ dàng phân loại file. Hay trong một trường hợp đặc biệt nào đó có những class trùng tên nhưng nằm trong các package khác nhau thì vẫn được chấp nhận. Khi tổ chức một project bạn có thể dễ dàng thấy được nó gồm những phần gì, thậm chí có thể biết được ai viết project này. Thông thường, người ta thường sử dụng domain hay tên công ty để làm tiền tố cho tên của package
Ví dụ về cách tổ chức một project
- Phân quyền truy cập: Ở phần access modifier ta có access modifier default giúp bạn có thể quản lý xem class nào được gọi tới class thuộc package nào
- Chọn lọc khi import:
Các package trong java được phân cấp như trên hình vẽ
- Khi bạn muốn import tất cả các class trong package thì sử dụng lệnh import java.sql.*
- Khi chỉ muốn sử dụng class nằm trong package regex thì sử dụng lệnh import java.util.regex.*
Rõ ràng rằng việc sử dụng package giúp bạn có thể truy cập vào những class thực sự cần thiết
Bạn đọc tham khảo thêm:
[Giải đáp] Syntax là gì? Các lỗi cú pháp Syntax trong lập trìnhDatabase Administrator là gì và những kỹ năng cần thiết của DBA
Cách truy cập Package từ Package khác
- Sử dụng packagename.*: Khi bạn sử dụng packagename .*thì lúc này tất cả các lớp hay interface của các gói đều có thể truy cập được, nhưng các gói con của nó thì không
Để có thể truy cập các lớp hay interface của gói khác từ khói hiện tại ta sử dụng từ khóa import
Ví dụ về cách truy cập Package từ Package khác bằng cách sử dụng packagename.*
- Sử dụng packagename.classname: Bạn chỉ có thể truy cập được tới lớp mà đã được khai báo của package
Ví dụ về cách truy cập Package từ Package khác bằng cách sử dụng packagename.ClassName
- Sử dụng tên đầy đủ: Nếu sử dụng tên đầy đủ thì bạn chỉ được phép truy cập tới lớp mà đã được khai báo của Package, không cần sử dụng từ khóa import, nhưng phải sử dụng tên đầy đủ mỗi khi truy cập vào các lớp hay interface
Cách sử dụng tên đầy đủ thường được dùng khi hai Package có tên lớp (Class) giống nhau Ví dụ: cả hai package là java.sql và java.util đều có cùng tên lớp là Date
Ví dụ về cách truy cập Package từ Package khác bằng cách sử dụng tên đầy đủ
Lưu ý:
- Nếu bạn đã import một package thì package con của package đó sẽ không được import
- Thứ tự của chương trình là: package → import → class
Thứ tự của chương trình từ trên xuống dưới như hình
- Nên sử dụng import packagename.ClassName khi muốn sử dụng một class của package này ở một package khác
- Mỗi một package sẽ tương ứng với một thư mục
Kết luận: Có thể cho rằng package trong java đóng một vai trò rất quan trọng đối với các lập trình viên. Khi bạn biết sử dụng thì nó sẽ giúp việc code trở nên thuận tiện và dễ dàng hơn. Hy vọng rằng bài viết package là gì này đã trang bị cho bạn những kiến thức cơ bản và cần thiết