Một gói có thể được định nghĩa là một nhóm các liên quan các loại (lớp, giao diện, kiểu liệt kê và chú thích) cung cấp bảo vệ truy cập và quản lý không gian tên.
Đào Tạo Java |
Một số gói hiện có trong Java là
java.lang - gói các lớp cơ bản
java.io - các lớp cho đầu vào, các hàm đầu ra được gói trong gói này
Các lập trình viên có thể định nghĩa các gói riêng của họ để gói nhóm các lớp / giao diện, v.v ... Đó là một cách thực hành tốt để nhóm các lớp liên quan do bạn triển khai để lập trình viên có thể dễ dàng xác định rằng các lớp, giao diện, bảng liệt kê và chú thích có liên quan.
Vì gói tạo ra một không gian tên mới, sẽ không có bất kỳ xung đột tên nào với tên trong các gói khác. Sử dụng các gói, việc cung cấp kiểm soát truy cập sẽ dễ dàng hơn và cũng dễ dàng hơn trong việc định vị các lớp liên quan.
Tạo một gói
Trong khi tạo gói, bạn nên chọn tên cho gói và bao gồm câu lệnh gói cùng với tên đó ở đầu mỗi tệp nguồn có chứa các lớp, giao diện, liệt kê và các loại chú thích mà bạn muốn đưa vào gói.
Câu lệnh gói phải là dòng đầu tiên trong tệp nguồn. Chỉ có thể có một câu lệnh gói trong mỗi tệp nguồn và nó áp dụng cho tất cả các loại trong tệp.
Nếu một câu lệnh gói không được sử dụng thì lớp, giao diện, bảng liệt kê và các loại chú thích sẽ được đặt trong gói mặc định hiện tại.
Để biên dịch các chương trình Đào tạo java với các câu lệnh gói, bạn phải sử dụng tùy chọn -d như hiển thị bên dưới.
javac -d Destination_folder file_name.java
Đào tạo java Sau đó, một thư mục có tên gói đã cho sẽ được tạo ở đích đã chỉ định và các tệp lớp đã biên dịch sẽ được đặt trong thư mục đó.
Chúng ta hãy xem một ví dụ tạo ra một gói được gọi là động vật . Đó là một cách thực hành tốt để sử dụng tên của các gói có chữ in thường để tránh mọi xung đột với tên của các lớp và giao diện.
Ví dụ gói sau chứa giao diện có tên là động vật
/* File name : Animal.java */ package animals; interface Animal { public void eat(); public void travel(); }Bây giờ, chúng ta hãy thực hiện giao diện trên trong cùng một động vật gói
package animals; /* File name : MammalInt.java */ public class MammalInt implements Animal { public void eat() { System.out.println("Mammal eats"); } public void travel() { System.out.println("Mammal travels"); } public int noOfLegs() { return 0; } public static void main(String args[]) { MammalInt m = new MammalInt(); m.eat(); m.travel(); } }Bây giờ biên dịch các tệp java như dưới đây
$ javac -d . Animal.java
$ javac -d . MammalInt.java
Bây giờ một gói / thư mục có tên động vật sẽ được tạo trong thư mục hiện tại và các tệp lớp này sẽ được đặt trong đó như hiển thị bên dưới.
Bạn có thể thực thi tệp lớp trong gói và nhận kết quả như hiển thị bên dưới.
Mammal eats
Mammal travels
Từ khóa nhập
Nếu một lớp muốn sử dụng một lớp khác trong cùng một gói, tên gói không cần phải được sử dụng. Các lớp trong cùng một gói tìm thấy nhau mà không có bất kỳ cú pháp đặc biệt nào.Tại đây, một lớp có tên Boss được thêm vào gói bảng lương đã chứa Nhân viên. Sau đó, Boss có thể tham khảo lớp Nhân viên mà không cần sử dụng tiền tố bảng lương, như được thể hiện bởi lớp Boss sau.
package payroll; public class Boss { public void payEmployee(Employee e) { e.mailCheck(); } }Điều gì xảy ra nếu lớp Nhân viên không có trong gói lương? Sau đó, lớp Boss phải sử dụng một trong các kỹ thuật sau đây để tham chiếu đến một lớp trong một gói khác.
Tên đủ điều kiện của lớp có thể được sử dụng. Ví dụ:
payroll.EmployeeGói có thể được nhập bằng từ khóa nhập và thẻ đại diện (*). Ví dụ:
import payroll.*;Bản thân lớp có thể được nhập bằng từ khóa nhập. Ví dụ:
import payroll.Employee;Lưu ý - Một tệp lớp có thể chứa bất kỳ số lượng báo cáo nhập. Các báo cáo nhập khẩu phải xuất hiện sau câu lệnh gói và trước khi khai báo lớp.
Cấu trúc thư mục của các gói
Hai kết quả chính xảy ra khi một lớp được đặt trong một gói
Tên của gói trở thành một phần của tên của lớp, như chúng ta vừa thảo luận trong phần trước.
Tên của gói phải khớp với cấu trúc thư mục chứa mã byte tương ứng.
Đây là cách đơn giản để quản lý các tệp của bạn trong Java
Đặt mã nguồn cho một loại, giao diện, kiểu liệt kê hoặc loại chú thích trong một tệp văn bản có tên là tên đơn giản của loại và phần mở rộng là .Đào tạo java.
// File Name : Car.java package vehicle; public class Car { // Class implementation. }Bây giờ, đặt tệp nguồn vào một thư mục có tên phản ánh tên của gói mà lớp thuộc về
....\vehicle\Car.java
Bây giờ, tên lớp và tên đường dẫn đủ điều kiện sẽ như sauTên lớp → phương tiện. Xe
Tên đường dẫn → phương tiện \ Car.java (trong cửa sổ)
Nói chung, một công ty sử dụng tên miền Internet đảo ngược cho tên gói của nó.
Ví dụ - Tên miền Internet của công ty là apple.com, sau đó tất cả các tên gói của nó sẽ bắt đầu bằng com.apple. Mỗi thành phần của tên gói tương ứng với một thư mục con.
Ví dụ - Công ty có gói com.apple.computers có chứa tệp nguồn Dell.java, nó sẽ được chứa trong một loạt các thư mục con như thế này
....\com\apple\computers\Dell.java
Tại thời điểm biên dịch, trình biên dịch tạo một tệp đầu ra khác nhau cho mỗi lớp, giao diện và kiểu liệt kê được định nghĩa trong nó. Tên cơ sở của tệp đầu ra là tên của loại và phần mở rộng của nó là . Class .
// File Name: Dell.java package com.apple.computers; public class Dell { } class Ups { }Bây giờ, biên dịch tệp này như sau bằng cách sử dụng tùy chọn -d
$javac -d . Dell.java
Các tập tin sẽ được biên dịch như sau
.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class
Bạn có thể nhập tất cả các lớp hoặc giao diện được xác định trong \ com \ apple \ computer \ như sau
import com.apple.computers.*;
Giống như các tệp nguồn .Đào tạo java, các tệp. Class đã biên dịch phải nằm trong một loạt các thư mục phản ánh tên gói. Tuy nhiên, đường dẫn đến tệp.
Class không nhất thiết phải giống với đường dẫn đến tệp nguồn .java. Bạn có thể sắp xếp các thư mục nguồn và lớp riêng biệt, như
<path-one>\sources\com\apple\computers\Dell.java
<path-two>\classes\com\apple\computers\Dell.class
Đường dẫn đầy đủ đến thư mục lớp, <path-hai> \ class, được gọi là đường dẫn lớp và được đặt với biến hệ thống CLASSPATH. Cả trình biên dịch và JVM đều xây dựng đường dẫn đến các tệp. Class của bạn bằng cách thêm tên gói vào đường dẫn lớp.
Giả sử <path-hai> \ class là đường dẫn lớp và tên gói là com.apple.computers, sau đó trình biên dịch và JVM sẽ tìm các tệp. Class trong <path-hai> \ class \ com \ apple \ computer.
Một đường dẫn lớp có thể bao gồm một số đường dẫn. Nhiều đường dẫn phải được phân tách bằng dấu chấm phẩy (Windows) hoặc dấu hai chấm (Unix). Theo mặc định, trình biên dịch và JVM tìm kiếm thư mục hiện tại và tệp JAR chứa các lớp nền tảng Đào tạo java để các thư mục này được tự động trong đường dẫn lớp.
Đặt biến hệ thống CLASSPATH
Để hiển thị biến CLASSPATH hiện tại, hãy sử dụng các lệnh sau trong Windows và UNIX (Bourne shell) -
Trong Windows → C: \> đặt CLASSPATH
Trong UNIX →% echo $ CLASSPATH
Để xóa nội dung hiện tại của biến CLASSPATH, hãy sử dụng
Trong Windows → C: \> đặt CLASSPATH =
Trong UNIX →% không đặt CLASSPATH; xuất khẩu CLASSPATH
Để đặt biến CLASSPATH
Trong Windows → đặt CLASSPATH = C: \ users \ jack \ java \ class
Trong UNIX →% CLASSPATH = / home / jack / java / class; xuất khẩu CLASSPATH
Không có nhận xét nào:
Đăng nhận xét