1. Xây dựng Lớp
Lớp là một cấu trúc dữ liệu nhưng bao gồm dữ liệu và các hàm thao tác trên dữ liệu đó. Lớp định nghĩa kiểu dữ liệu mới, dùng để tạo đối tượng thuộc kiểu lớp đó.
Khi định nghĩa một lớp, bạn chỉ ra thuộc tính của lớp được thể hiện bằng biến gọi là biến thành viên (Member Variable) và hành vi được thể hiện bởi mã lệnh trong phương thức (Method), đó là các thành phần của lớp. Trong hầu hết các lớp, các biến thành viên được truy cập bởi các phương thức của lớp đó. Vì vậy, chính các phương thức quyết định dữ liệu của lớp có thể dùng như thế nào.
Dạng đầy đủ của một định nghĩa lớp như sau :
[public] |
Lớp
được truy xuất chung cho các gói
khác,
mặc định chỉ có các đoạn mã trong cùng một gói mới truy xuất
nó |
[abstract] |
Lớp
trừu tượng, không
thể khởi tạo |
[final] |
Lớp
hằng không có lớp con |
class
ClassName |
Tên
lớp |
[extends
SuperClass] |
Kế
thừa một lớp cha SuperClass |
[implements
Interfaces] |
Cài
đặt các giao diện Interfaces |
{
//Member
Variables Declarations |
Khai
báo các biến thành viên |
//Methods
Declarations |
Khai
báo các phương thức (hàm) |
} |
|
Ví dụ: Tạo một lớp các đối tượng nhân viên như sau:
class NhanVien {
private String hoTen;
private int namSinh;
private float heSoLuong;
static int luongCB;
}
2. Tạo Đối tượng
Để có được các đối tượng của một lớp phải qua hai giai đoạn :
- Khai báo biến kiểu tham chiếu để trỏ đến đối tượng
className ObjectName;
Ví dụ : NhanVien nv;
Khai báo biếnnv có kiểu lớp NhanVien, thực ra không cấp phát bộ nhớ đủ chứa đối tượng kiểu lớp NhanVien, mà chỉ tạo ra tham chiếu đểtrỏ đến đối tượng. Sau câu lệnh này, biến nv xuất hiện trên bộ nhớ chứa giá trị null chỉ ra rằng nó chưa trỏ đến một đối tượng thực tế nào
- Sau đó, để thực sự tạo ra một đối tượng và gán địa chỉ của đối tượng cho biến này, dùng toán tử new
ObjectName = new ClassName();
Ví dụ: nv = new NhanVien();
- Có thể kết hợp cả hai bước trên vào một câu lệnh :
ClassName ObjectName = new ClassName();
Ví dụ:NhanVien nv = new NhanVien();
3. Cách truy xuất thành phần của lớp
a. Biến khai báo trong định nghĩa lớp
- Biến đối tượng (Instance Variable hay Object Variable): chỉ thuộc tính đối tượng, khi truy xuất phải khởi tạo đối tượng
+ Cách khai báo biến đối tượng:
TypeInstanceVar;
+ Cách truy cập biến đối tượng:
ObjectName.InstanceVar
Ví dụ: NhanVien nv = new NhanVien();
System.out.println(nv.hoTen); //không thể truy cập biến hoTen, do khai báo private
- Biến lớp (Class Variable): về bản chất là biến toàn cục, là biến tĩnh được tạo lập một lần cùng với lớp, dùng chung cho mọi đối tượng thuộc lớp, khi truy xuất không cần khởi tạo đối tượng, để trao đổi thông tin của các đối tượng cùng lớp
+ Cách khai báo biến lớp :
static TypeClassVar;
+ Cách truy cập biến lớp :
ClassName.ClassVar
Ví dụ: System.out.println(NhanVien.luongCB);
- Biến cục bộ (Local Variable): ngoài biến lớp, biến đối tượng là biến thành viên của lớp, còn có biến cục bộ được khai báo và tồn tại trong phạm vi hàm. Biến cục bộ bắt buộc phải khởi tạo giá trị trước khi sử dụng.
b. Hàm khai báo trong định nghĩa lớp gồm có hai loại :
- Hàm đối tượng (Object Method):
+ Cách truy xuất hàm đối tượng như biến đối tượng
ObjectName.ObjectMethod(Parameter-List)
- Hàm lớp (Class Method): dùng chung cho mọi đối tượng thuộc lớp, khi truy xuất không cần khởi tạo đối tượng. Khai báo hàm lớp thêm từ khoá static.
+ Cách truy xuất hàm lớp :
ClassName.ClassMethod(Parameter-List)
Ví dụ:
class NhanVien {
private String hoTen;//Biến đối tượng
private int namSinh;
private float heSoLuong;
static int luongCB; //Biến lớp
float luong() { //Hàm đối tượng
float l = luongCB * heSoLuong; //Biến cục bộ
return l;
}
public static void main(String args[]){
NhanVien.luongCB = 290;
Nhanvien nv=new Nhanvien();
System.out.println(nv.luong()) ;
}
}
Ví dụ: Các hằng, hàm chuẩn toán học của lớp Math trong gói java.lang là hằng, hàm lớp nên khi gọi không cần phải khởi tạo đối tượng
Ví dụ : double s = Math.pow(r,2)*Math.PI;