Chapter 7. Packages and Modules
🔥 1. Giới thiệu về Khai báo trong Java
Trong Java, khai báo (declaration) được sử dụng để giới thiệu các biến, phương thức, lớp, giao diện, package, và module vào phạm vi của chương trình.
Khi khai báo, bạn có thể chỉ định tên, kiểu dữ liệu, phạm vi truy cập, và các thuộc tính (modifiers) như static
, final
, abstract
, v.v.
🔥 2. Các loại khai báo trong Java
Biến (Variable)
int age = 25;
Phương thức (Method)
public void sayHello() {}
Lớp (Class)
public class Person {}
Giao diện (Interface)
interface Flyable {}
Gói (Package)
package com.example;
Module (Java 9+)
module my.module {}
🔥 3. Khai báo Biến (Variable Declarations)
Biến là thành phần cơ bản trong Java để lưu trữ dữ liệu.
3.1. Cú pháp khai báo biến
<modifier> <kiểu dữ liệu> <tên biến> = <giá trị>;
📌 Ví dụ:
int age = 25;
double price = 19.99;
String name = "Alice";
3.2. Các loại biến trong Java
Có 3 loại biến chính:
Biến cục bộ (Local Variable)
Khai báo trong một phương thức hoặc khối mã. Chỉ có thể truy cập trong phạm vi đó.
void test() { int x = 10; }
Biến thực thể (Instance Variable)
Thuộc về một đối tượng, có thể được truy cập thông qua this
.
class Person { String name; }
Biến lớp (Class Variable - static)
Được khai báo với static
, thuộc về lớp thay vì từng đối tượng.
static int count;
3.3. Khai báo biến với Modifiers
final
Không thể thay đổi giá trị sau khi gán lần đầu
final int MAX = 100;
static
Thuộc về lớp thay vì đối tượng
static int counter = 0;
volatile
Đảm bảo giá trị luôn được cập nhật giữa các thread
volatile boolean running;
📌 Ví dụ về final
, static
và volatile
:
class Example {
static int count = 0; // Biến lớp (static)
final int MAX_VALUE = 100; // Biến không đổi (final)
volatile boolean isRunning; // Biến có thể thay đổi giữa các thread
}
🔥 4. Khai báo Phương thức (Method Declarations)
Phương thức là khối mã có thể gọi để thực thi một chức năng nào đó.
4.1. Cú pháp khai báo phương thức
<modifier> <kiểu dữ liệu trả về> <tên phương thức>(<tham số>) {
// Thân phương thức
}
📌 Ví dụ:
public void sayHello() {
System.out.println("Hello!");
}
4.2. Modifier của phương thức
final
Không thể override trong lớp con
final void print() {}
static
Gọi mà không cần tạo đối tượng
static void hello() {}
abstract
Phương thức không có thân, chỉ khai báo
abstract void run();
synchronized
Chỉ cho phép một thread truy cập
synchronized void update() {}
📌 Ví dụ về final
, static
, và abstract
:
abstract class Animal {
abstract void makeSound(); // Phương thức trừu tượng
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Woof!");
}
}
🔥 5. Khai báo Lớp và Giao diện (Class & Interface Declarations)
5.1. Khai báo Lớp (Class)
Cú pháp:
<modifier> class <TênLớp> {
// Thành phần của lớp
}
📌 Ví dụ:
public class Person {
String name;
public void sayHello() {
System.out.println("Hello, " + name);
}
}
5.2. Modifier của lớp
final
Không thể bị kế thừa
final class MathUtils {}
abstract
Không thể tạo đối tượng từ lớp này
abstract class Animal {}
📌 Ví dụ về final
và abstract
:
final class Utility {
public static void printMessage() {
System.out.println("Hello");
}
}
🔥 6. Khai báo Gói (Package Declarations)
Package giúp tổ chức các lớp và giao diện theo nhóm.
Cú pháp:
package com.example;
📌 Ví dụ:
package com.mekongocop.service;
public class OrderService { }
🔥 7. Khai báo Module (Java 9+)
Module giúp tổ chức mã nguồn thành các đơn vị độc lập.
Cú pháp:
module <TênModule> {
requires <TênModuleKhác>;
exports <TênPackage>;
}
📌 Ví dụ:
module com.mekongocop {
exports com.mekongocop.service;
}
🔥 8. Tóm tắt & Kết luận
✅ Khai báo trong Java bao gồm biến, phương thức, lớp, giao diện, package và module.
✅ Modifiers như static
, final
, abstract
giúp kiểm soát hành vi của các thành phần.
✅ Phạm vi khai báo (Scope) quyết định nơi một thành phần có thể được sử dụng.
✅ Module (Java 9+) giúp tổ chức mã nguồn lớn theo mô-đun.
Last updated