Java là một ngôn ngữ lập trình hướng đối tượng. Cấu trúc của Java đều gồm các đối tượng. Để tạo được các đối tượng thì cần phải có lớp (class). Bài này sẽ giới thiệu về lớp (class) và cách xây dựng lớp trong Java.
1. Lớp (class) là gì?
Lớp (class) là một thiết kế (blueprint), mẫu (prototype) cho các đối tượng cùng kiểu. Lớp có thể coi là khuôn mẫu để tạo các đối tượng. Ví dụ: Người, Xe, Động vật,…
Lớp chính là kết quả của quá trình trừu tượng hóa dữ liệu:
- Lớp định nghĩa 1 kiểu dữ liệu mới, trừu tượng hóa 1 tập các đối tượng.
- Một đối tượng gọi là một thể hiện của lớp.
Các thành phần của lớp
Lớp đóng gói các thuộc tính (attribute) và phương thức (method) chung của các đối tượng.
Thuộc tính: Một thuộc tính của một lớp là một trạng thái chung được đặt tên của lớp đó. Ví dụ: Lớp Ôtô có các thuộc tính: màu sắc, vận tốc, hãng sản xuất,…
Mỗi đối tượng của lớp có các giá trị của thuộc tính khác nhau. Ví dụ: một chiếc Ôtô bạn đang sử dụng có thể có màu đen, vận tốc 60 km/h.
Phương thức: Xác định các hoạt động chung mà tất cả các đối tượng của lớp thực hiện được. Ví dụ: Lớp Ôtô có các phương thức: tăng tốc độ, giảm tốc độ,…
2. Khai báo lớp (class) trong Java
Lớp sẽ nằm trong một package (gói) nào đó. Sử dụng từ khóa class để khai báo và định nghĩa lớp với cú pháp như sau:
accessmodifier class <Tên Lớp> {
//các thuộc tính
//các phương thức
}
accessmodifier gọi là chỉ định truy cập, accessmodifier của lớp (class) có thể là:
public
: lớp có thể được truy cập từ bất cứ đâu, kể cả bên ngoài package chứa lớp đó.mặc định (default)
: lớp có thể được truy cập từ bên trong package chứa lớp đó. Khi không ghi rõ accessmodifier cho lớp thì đó là mặc định.
public | mặc định | |
Cùng lớp | ✔ | ✔ |
Cùng gói | ✔ | ✔ |
Khác gói | ✔ | ✘ |
Lưu ý: Bên trên đang nói về accessmodifier của lớp (class), accessmodifier của các thuộc tính, phương thức trong lớp (class) có ý nghĩa khác, sẽ tìm hiểu ở phần kế thừa trong Java.
Và accessmodifier protected và private không được sử dụng cho lớp trong Java. Nếu bạn cố sử dụng các accessmodifier này cho lớp thì chương trình sẽ báo lỗi “invalid modifier”
.
Ví dụ:
Khai báo và định nghĩa lớp với accessmodifier mặc định.
package gochocit.Demo;
class Dog {
//thuộc tính
private String ten;
private String maulong;
//phương thức
public void bark(){
System.out.println("BARRRRK!");
}
}
Khai báo và định nghĩa lớp với accessmodifier public.
package gochocit.Demo;
public class Dog {
//thuộc tính
private String ten;
private String maulong;
//phương thức
public void bark(){
System.out.println("BARRRRK!");
}
}
Thuộc tính của lớp
Các thuộc tính phải được khai báo bên trong lớp. Mỗi đối tượng có bản sao các thuộc tính của riêng nó. Giá trị của một thuộc tính thuộc các đối tượng khác nhau là khác nhau.
Bản chất của các thuộc tính là các thành phần dữ liệu của đối tượng. Khai báo tương tự như biến.
Cú pháp khai báo thuộc tính:
accessmodifier kiểudữliệu tênThuộcTính;
Thuộc tính có thể được khởi tạo khi khai báo. Nếu không được khởi tạo thì các giá trị mặc định sẽ được sử dụng.
Phương thức của lớp
Phương thức xác định các hoạt động của lớp. Bất kỳ phương thức nào cũng phải thuộc về một lớp nào đó.
Cú pháp khai báo phương thức:
accessmodifier kiểuTrảVề tênPhươngThức (ds tham số) {
// Nội dung phương thức
}
Lưu ý: accessmodifier của các thuộc tính, phương thức trong lớp (class) có ý nghĩa khác với accessmodifier của lớp (class), sẽ tìm hiểu ở phần kế thừa trong Java.
Sau khi có lớp (class), cần tạo ra các đối tượng của lớp để sử dụng. Chúng ta sẽ tìm hiểu về đối tượng ở bài Đối tượng (object) và cách sử dụng đối tượng trong Java.