Package và import
1. Package là gì?
Phần tiêu đề “1. Package là gì?”Package là cách Java tổ chức các class liên quan vào cùng một “thư mục logic”, giúp code có cấu trúc rõ ràng và tránh trùng tên class giữa các thư viện khác nhau:
package com.bumbii.app; // khai báo package - PHẢI là dòng đầu tiên của file (bỏ qua comment)
public class Main { public static void main(String[] args) { System.out.println("Hello from com.bumbii.app"); }}Tên package theo quy ước chữ thường, thường đặt theo domain đảo ngược (com.tencongty.tenduán), và phải khớp với cấu trúc thư mục chứa file .java (ví dụ package com.bumbii.app phải nằm trong đường dẫn com/bumbii/app/Main.java).
2. import - dùng class từ package khác
Phần tiêu đề “2. import - dùng class từ package khác”package com.bumbii.app;
import java.util.List; // import một class cụ thểimport java.util.ArrayList;import java.util.Scanner;
public class Main { public static void main(String[] args) { List<String> names = new ArrayList<>(); Scanner scanner = new Scanner(System.in); }}Có thể import tất cả class trong một package bằng * (không khuyến khích trong code thực tế vì kém rõ ràng):
import java.util.*; // import mọi class trong java.util3. Các class trong java.lang không cần import
Phần tiêu đề “3. Các class trong java.lang không cần import”Gói java.lang (chứa String, Object, Integer, Math, System,…) được tự động import vào mọi file Java - đây là lý do bạn dùng được String, System.out.println mà không cần dòng import nào.
// Không cần import java.lang.String, java.lang.System,...String message = "Xin chào";System.out.println(message);4. Package cùng thư mục không cần import
Phần tiêu đề “4. Package cùng thư mục không cần import”Các class nằm trong cùng một package có thể dùng trực tiếp lẫn nhau, không cần import:
package com.bumbii.app;
public class Helper { static void greet() { System.out.println("Xin chào từ Helper"); }}package com.bumbii.app; // CÙNG package với Helper
public class Main { public static void main(String[] args) { Helper.greet(); // dùng trực tiếp, không cần import vì cùng package }}5. Quyền truy cập giữa các package
Phần tiêu đề “5. Quyền truy cập giữa các package”Modifier truy cập (public, private, không ghi gì (package-private), protected) quyết định một class/thành viên có dùng được từ package khác hay không. Chi tiết về các modifier này sẽ được nói kỹ ở phần Hướng đối tượng (Encapsulation).
Tổng kết
Phần tiêu đề “Tổng kết”packagetổ chức các class liên quan vào cùng một nhóm logic, khai báo ở dòng đầu fileimportđể dùng class từ package khác;java.langđược tự động import, không cần khai báo- Class trong cùng package dùng được lẫn nhau mà không cần
import - Tên package theo domain đảo ngược, phải khớp với cấu trúc thư mục chứa file