Phương thức là một nhóm các lệnh chỉ ra cách thức thực hiện hoạt động nào đó của đối tượng. Ví dụ phương thức setPoint ở trên chỉ ra cách thức vào điểm của sinh viên bằng cách gán cho biến điểm point bằng với giá trị của tham số truyền vào là pnt
của sinh viên có mã là sID.
Cú pháp của phương thức :
phạm_vi_truy_cập thuộc_tính_của_phương_thức kiểu_trả_về tên_phương_thức (danh_sách_tham_số){
}
Ví dụ :
Trong cú pháp trên :
- phạm_vi_truy_cập (Access Specifier) : mô tả phạm vi cho phép truy cập tới phương thức. Java cung cấp một số phạm vi như sau :
o public : Có thể truy cập phương thức từ bên ngoài gói hoặc bên ngoài lớp chứa phương thức đó.
33 o default : Chỉ có thể truy cập phương thức từ các lớp cùng một gói với
lớp chứa phương thức.
o protected : Chỉ có thể truy cập phương thức trong lớp khai báo hoặc lớp con của lớp chứa phương thức, kể cả lớp con thuộc một gói khác. o private : Chỉ có thể truy cập phương thức ngay trong chính lớp chứa
phương thức.
Trong ví dụ trên, phương thức setPoint không có phạm vi truy cập thì JVM mặc định là public. Như vậy ta có thể truy nhập phương thức này của lớp Student từ lớp bên ngoài là lớp StudentManage bằng câu lệnh s1.setPoint(‘PTIT1234’,8.5).
Khả năng truy cập
Public Protected Default Private
Cùng lớp Có Có Có Có Khác lớp, cùng gói Có Có Có Không Khác lớp, không cùng gói
Có Không Không Không
Lớp con, cùng gói Có Có Có Không Lớp con, khác gói Có Có Không Không
Bảng 2. 1 Các từ khóa mô tả phạm vi truy nhập
- Thuộc_tính_của_phương_thức (modifier) : Mô tả tính chất và cách thức sử dụng phương thức. Java cung cấp một số thuộc tính cho phương thức như sau :
o static : Phương thức được dùng chung cho tất cả các đối tượng của lớp. Ngay cả khi chúng ta không cần tạo một đối tượng cụ thể của lớp, chúng ta vẫn dùng được phương thức này.
o abstract : Phương thức chỉ có khai báo mà không có code bên trong. Code của phương thức sẽ được viết tại lớp con của lớp chứa phương thức abstract.
o final : Phương thức có tiền tố final này sẽ không được khai báo chồng (overriding) ở lớp con.
34 o synchronized : Được sử dụng trong trường hợp lập trình đa luồng. Từ
khóa này cho phép chỉ có một luồng được truy cập tới phương thức. - kiểu_trả_về : Là kiểu dữ liệu cuối cùng được trả về cho phương thức đó.
Trong trường hợp kiểu void có nghĩa là phương thức đó không trả về kiểu giá trị cụ thể nào. Trong trường hợp kiểu dữ liệu cụ thể (ví dụ int, float, double,…) thì cuối phương phức phải có lệnh return kèm theo giá trị trả về cho phương thức. Trong trường hợp lệnh return không kèm theo giá trị nào thì nó mang ý nghĩa thoát khỏi phương thức.
Ví dụ :
- tên_phương_thức : Được đặt theo các nguyên tắc giống với cách đặt tên biến.
- danh_sách_tham_số : Danh sách tham số của phương thức là các biến của phương thức và nó yêu cầu phải được truyền giá trị cụ thể cho các biến đó khi ta sử dụng phương thức. Các tham số này được khai báo ngăn cách bởi dấu phẩy. Trong ví dụ trên, phương thức minValue có hai tham số num1, num2 có kiểu là int. Khi sử dụng phương thức ở hàm main, ta phải truyền cho hai tham số này các giá trị tương ứng của chúng do người dùng nhập vào.