d) Chương trình ứng dụn gở dạng Applet lẫn dạng độc lập
4.3.1 Phạmvi của các thành phần
a) Phạm vi lớp
Phạm vi lớp xác định những thành phần được truy nhập bên trong của một lớp (kể cả lớp được kế thừa). Quyền truy nhập của chúng thường được xác định thông qua các bổ ngữ (modifier): public, protected, private.
Bên trong định nghĩa của lớp, các biến tham chiếu tới chính lớp đó và được quyền truy nhập tới tất cả các thành phần của nó mà không cần quan tâm tới các bổ ngữ của chúng.
Ví dụ 4.3. Phạm vi lớp của các thành phần.
class BongDen {
//Các biến thành phần
private int soWatts; //Số watts của bóng đèn
private boolean batTat; //true - bong sáng, false – tắt
private String viTri;
public void batDen(){batTat = true;} //Bat den
public void tatDen(){batTat = false;} //Tat den
public boolean tatHaySang(){return batTat; }
public BongDen nhanDoi(BongDen bongCu){ //(1) BongDen bongMoi = new BongDen();
bongMoi.soWatts = bongCu.soWatts; //(2) bongMoi.batTat = bongCu.batTat; //(3) bongMoi.viTri = new String(bongCu.viTri); //(4) return bongMoi;
}}
Hàm nhanDoi() ở (1) của lớp BongDen có tham biến bongCu và biến cục bộ
bongMoi đều tham chiếu tới lớp BongDen. Mặc dù các biến thành phần soWatts,
batTat, viTri là private (sở hữu riêng) nhưng chúng vẫn cho phép truy nhập đối với cả 2 tham chiếu trên ở (2), (3) và (4).
b) Phạm vi khối
Trong chương trình, các lệnh khai báo và các lệnh thực hiện có thể gộp lại thành từng khối (block) bằng cách sử dụng { và }. Chú ý là thân của hàm, của lớp cũng là một khối. Các khối có thể lồng nhau và khi đó luật phạm vi được áp dụng cho các biến cục bộ. Luật phạm vi phát biểu tổng quát là một biến được khai báo ở trong một khối có phạm vi xác định bên trong khối và không xác định ở bên ngoài khối đó. Lưu ý:
Trong cùng một phạm vi không thể khai báo một biến hai lần. Các tham biến cũng không thể khai báo lại trong bản thân của hàm. Khai báo ở chỗ nào cũng được miễn là phải khai báo trước khi sử dụng.
Phạm vi khối của biến được xác định kể từ chỗ bắt đầu khai báo cho đến kết thúc khối (gặp dấu ngoặc ‘}’ tương ứng).
Có thể có nhiều khối lồng nhau nhưng không được cắt nhau và những biến khai báo ở khối ngoài đều có phạm vi xác định ở trong mọi khối bao bên trong nó.