Bài 7 : Lớp và Phương thức trong Lập trình Java 9 - Phần 2

Bài 7 : Lớp và Phương thức trong Lập trình Java 9 - Phần 2
access_time 2/3/2018 12:00:00 AM
person Nguyễn Mạnh Hùng

Bài 7 : Lớp và Phương thức trong Lập trình Java 9 - Phần 2

1 Phương thức khởi tạo và Phương thức hủy

1.1 Phương thức khởi tạo

Phương thức khởi tạo là phương thức đặc biệt. Phương thức này sẽ được gọi khi chúng ta tạo đối tượng là thể hiện của lớp. Chức năng của phương thức khởi tạo là khởi tạo các giá trị của thành phần dữ liệu (bao gồm các field (Trường chứa thông tin) hay còn gọi là các thuộc tính) của của đối tượng.

Phương thức khởi tạo được định nghĩa khi xây dựng lớp, nếu ta không tạo ra thì trình biên dịch sẽ thay mặt chúng ta mà tạo phương thức khởi tạo một cách mặc định.

Chức năng của bộ khởi tạo là tạo ra đối tượng được xác định bởi một lớp và đặt trạng thái này hợp lệ. Trước khi bộ khởi tạo được thực hiện thì đối tượng chưa được cấp phát trong bộ nhớ. Sau khi bộ khởi tạo thực hiện hoàn thành thì bộ nhớ sẽ lưu giữ một thể hiện hợp lệ của lớp vừa khai báo.

Phương thức khởi tạo được khai báo giống như phương thức bình thường của lớp tuy nhiên nó có đặc điểm :

+ Không có giá trị trả về.

+ Tên phương thức khởi tạo trùng với tên của lớp

Để tạo phương thức khởi tạo, lập trình viên cần tuân thủ cú pháp sau :

Cú pháp

<access_modifier> <ClassName> ([list of parameters])
{
// body of the method
}
Mô tả

+ access_modifier: Xác định phạm vi truy cập của phương thức khởi tạo(public, protected, private và internal), nếu không cho phép thì không được phép truy cập, mặc định các phương thức sẽ là private.

+ ClassName: Tên phương thức trùng với tên của lớp.

+ list of parameters: Danh sách các tham số truyền vào của phương thức.

Ví dụ


Hình số 1 : Phương thức khởi tạo

Trong ví dụ trên lớp Point có 2 phương thức khởi tạo Point() và Point(int ox, int oy), vậy các phương thức khởi tạo cho phép nạp chồng phương thức.

1.2 Phương thức khởi tạo ngầm định

Phương thức thiết lập do chương trình dịch cung cấp khi trong khai báo lớp không có định nghĩa phương thức thiết lập nào.


Hình số 2 : Phương thức khởi tạo ngầm định

 

2. Hàm hủy

Các đối tượng cấp phát động bằng toán tử new, khi không tồn tại tham chiếu nào đến đối tượng, đối tượng đó xem như không còn cần đến nữa và bộ nhớ cho nó có thể được tự động giải phóng bởi bộ thu gom rác (garbage collector). Trình thu gom rác hoạt động trong một tuyến đoạn (Thread) độc lập với chương trình của bạn. Bạn không phải bận tâm gì đối với công việc này. Sau này bạn sẽ hiểu rõ tuyến đoạn là thế nào.

Tuy nhiên, Java cũng cho phép ta viết hàm hủy, có thể cũng cần thiết cho những trường hợp nào đó. Hàm hủy trong Java chỉ được gọi bởi trình thu gom rác, do vậy bạn khó đoán trước vào lúc nào hàm hủy sẽ được gọi.

Dạng hàm hủy như sau :

protected void finalize() {
// Body of Method
}

3. Phạm vi truy cập.

3.1 Giới thiệu

Phạm vi chỉ ra phần chương trình trong đó có thể truy xuất đến một đối tượng nào đó. Để kiểm soát truy nhập đến các thành phần (trường hoặc biến và phương thức) của các lớp, Java đưa ra khái niệm phạm vi class và phạm vi package. Tất cả các thành phần của một class sẽ được coi là thuộc phạm vi class; Trong định nghĩa phương thức thành phần của lớp có thể tham chiếu đến bất kỳ thành phần nào của lớp đó. Tuân theo ý tưởng đóng gói, Java coi tất cả các thành phần của một lớp có thể liên hệ với nhau.

Với phạm vi của các package – Gói, Mỗi package có thể chứa nhiều class. Các class trong package có thể truy cập tới tất cả các member trức thuộc các class khác trong cùng package với điều kiện các member phải có từ khóa xác định phạm vi truy cập là public.

3.2 Từ khóa xác đinh phạm vi truy xuất

Trong định nghĩa lớp, có thể xác định khả năng truy xuất thành phần của lớp nào đó từ bên ngoài phạm vi lớp. Để xác định khả năng truy xuất này Java cung cấp các từ khóa public, private, protected, internal:

·       public: Mọi thành phần liệt kê trong từ khóa public đều có thể truy xuất trong bất kỳ phương thức nào.

·       private: Những thành phần liệt kê trong phần private chỉ được truy xuất trong phạm vi lớp, bởi vì chúng thuộc sở hưu riêng của lớp.

·       protected : Những thành phàn liệt kê trong phần protected được phép truy xuất trong phạm vi nội tại của lớp chứa nó và lớp thừa kế. Điều đó có nghĩa là protected là sự kết hợp giữa public và private.

Ví dụ

Trong ví dụ này các field có phạm vi truy cập là private. Các phương thức sẽ phạm vi truy cập là public.


Hình số 3 : Phạm vi truy cập

4 Phương thức tĩnh (method static) và Biến tĩnh

4.1 Phương thức tĩnh

Mặc định khi gọi một phương thức, cần phải tạo đối tượng là thể hiện của phương thức đó. Java cung cấp cách thức định nghĩa phương thức để khi cần, có thể gọi sử dụng những phương thức đó 1 cách thuận tiện mà không cần phải thông qua Object; đó chính là phương thức tĩnh (method static).

Việc định nghĩa phương thức tính trong chương trình chẳng có nhiều khác biệt so với việc định nghĩa method thông thường, lập trình viên chỉ việc thêm vào trước phần khai báo method từ khóa static và <access_modifier> phải sử dụng là public là đủ.

Cú pháp khai báo phương thức tĩnh.

Cú pháp

<access_modifier> static <return_type> <MethodName> ([list of parameters])
{
// body of the method
}
Mô tả

+ access_modifier: Xác định phạm vi truy cập của phương thức (public, protected, private), nếu không cho phép thì không được phép truy cập, mặc định các phương thức sẽ là private.

+ return_type: Giá trị trả về của phương thức. Nếu phương thức không có giá trị trả về sẽ là void

+ MethodName: Tên phương thức.

+ list of parameters: Danh sách các tham số truyền vào của phương thức.

Cú pháp gọi phương thức static

Cú pháp

<ClassName>.< MethodName > ([list of parameters])

Mô tả

+ ClassName : Tên lớp

+ MethodName : Tên phương thức

list of parameters: Danh sách các tham số truyền vào của phương thức.

Ví dụ

Tạo lớp tính toán chứa phương thức static thực hiện tính tổng 2 số nguyên (tên phương thức là Add).


Hình số 4 : Ví dụ về phương thức tĩnh

4.2 Biến Static

Ứng với phương thức tĩnh (static method), Java cho phép bạn có thể định nghĩa các biến thành viên thuộc dạng static để sử dụng và thường thì biến static được dùng cho mục đích chia sẻ thông tin của Class đối với tất cả các Object thuộc về Class tương ứng.

Cú pháp

<access_modifier> static <type data>
Mô tả

·       access_modifier : Phạm vi truy cập

·       type data : Kiểu dữ liệu

Ví dụ: Tại một thời điểm nào đó chúng ta cần theo dõi trong chương trình có bao nhiêu đối tượng của Class X đã được tạo ra, trong tình huống này thì việc sử dụng 1 static variable là hợp lý nhất.


Hình số 5 : Ví dụ sử dụng biến static


vertical_align_top
share
Chat...