Tạo và sử dụng package

Một phần của tài liệu Học lập trình Java qua ví dụ (Trang 77 - 80)

Chương 6: Gói và thành phần chỉ định truy nhập

6.2Tạo và sử dụng package

Các bước tạo một package trong Java được cụ thể như sau:

Bước đầu tiên là chọn tên cho package. Tên package được viết dưới dạng chữ in thường, không bắt đầu bằng ký tự chữ số và không có dấu nối (-). Tuy nhiên, chúng có thể chứa các ký tự gạch dưới. Ngay khi tên package được chọn, một thư mục có tên ứng với tên package được tạo ra. Tất cả các tập tin nguồn chứa

chương trình Java trong package được đặt trong thư mục đó. Lệnh package

được thêm vào đầu trong mỗi tập tin nguồn chứa trong thư mục.

Cú pháp:

package <packagename>;

Ví dụ, giả sử Machines.Java và Gadgets.Java là hai tập tin được tạo ra trong

package có tên factory.

Như ở bước 1, thư mục được tạo ra với tên factory.

Dòng package factory; được thêm vào mỗi tập tin Machines.Java và

Gadgets.Java. Trong hai đoạn mã 1 và đoạn mã 2 minh họa ví dụ. Đoạn mã 1:

Line0 : package factory;

Line1 : public class Machines {

Line0 hiển thị mô tả package. Class Machines bây giờ nằm trong package factory

Đoạn mã 2:

Line0 : package factory;

Line1 : public class Gadgets {

Giả sử hai đoạn mã đã được hoàn thành và hai tập tin đã được lưu.

Bước kế tiếp là biên dịch và thực thi ứng dụng. Ví dụ, để thực thi lớp Machines thực hiện câu lệnh sau tại dấu nhắc lệnh với thư mục hiện tại là thư mục cha chứa tập tin nguồn:

Java factory.Machines

Để sử dụng một lớp tại bất kỳ vị trí nào, lệnh import được dùng. Ví dụ về cách dùng lệnh import để nhập lớp Machines từ package factory:

import factory.Machines; //import một class đơn

Để import tất cả các lớp trong package, dùng lệnh dưới đây : import factory.*; // import tất cả các class

Đoạn mã 3 minh họa cách dùng lớp Machines từ packge factory trong lớp

Chương 7 Thừa kế và giao tiếp

79/114

Đoạn mã 3:

package company;

import factory.Machines; public class Resources {

public void testMethod() {

Machines objMachines = new Machines(); } (adsbygoogle = window.adsbygoogle || []).push({});

}

Để chỉ ra lớp Resources thuộc package company, lệnh package được thêm vào dòng đầu tiên của đoạn mã. Để dùng lớp Machines trong lớp Resources,

cần phải import lớp Machines vào. Lúc biên dịch lớp Resources, phải đảm bảo

classpath chứa đường dẫn của thư mục chứa các package, ở đây là factory.

Tất cả các lệnh import trong lớp phải được đặt sau câu lệnh package và trước khai báo lớp. Các lệnh import và package đặt trong một tập tin sẽ ảnh hưởng đến tất cả các lớp trong tập tin và không thể áp dụng cho riêng từng lớp.

Trong lệnh package, tên của các package và tên của package con được phân

cách bởi dấu chấm. Mỗi thành phần của tên package phải là tên một thư mục trên máy cục bộ. Ví dụ, nếu lệnh package như dưới đây:

package demo.management.list.src;

thì, phải tạo cấu trúc thư mục như hình dưới : demo\management\list\src.

Thông thường, tên đầy đủ cần phải sử dụng để truy nhập những thành phần tĩnh (static) của lớp trong lớp khác. Tuy nhiên, điều đó làm cho mã trở nên cồng kềnh, đặc biệt khi có nhiều lời gọi thành phần tĩnh trong cùng một câu lệnh. Java cung cấp cách giải quyết bằng các lệnh import static. Lệnh import static cho phép một chương trình import riêng lẽ hay toàn bộ những thành phần tĩnh. Ví dụ, nếu lớp Machines thuộc vào package mnc.factory có một thành phần tĩnh

boltSize cần được dùng trong lớp Gadgets, thì lệnh import static có thể được

sử dụng. Lúc này, boltSize có thể được dùng ở bất cứ nơi đâu bên trong lớp

Gadgets mà không cần dùng tên đầy đủ của nó. Đoạn mã 4 minh họa trường hợp này.

Đoạn mã 4:

import static mnc.factory.Machines.boltSize; class Gadgets {

boltSize = 20; }

}

import static cũng có thể được dùng trong thư viện :

import static Java.lang.Math.PI; double area = PI*radius*radius;

Dù import static là đặc tính rất hữu ích, nhưng không nên sử dụng thường xuyên. Dùng quá nhiều import static làm cho chương trình trở nên khó đọc cồng kềnh khó đọc và cũng gây ra các vấn đề bảo dưỡng.

Một phần của tài liệu Học lập trình Java qua ví dụ (Trang 77 - 80)