2012-05-05 38 views
12
class Employee{ 
// salary variable is a private static variable 
private static double salary; 

// DEPARTMENT is a constant 
public static final String DEPARTMENT = "Development"; 

public static void main(String args[]){ 
    salary = 1000; 
    System.out.println(DEPARTMENT+ " average salary:"+salary); 
} 
} 

Chương trình java này chứa biến tĩnh. Nhưng tôi không thể hiểu được sự khác biệt giữa biến tĩnh công cộng và riêng tư.Sự khác biệt giữa biến tĩnh công khai và riêng tư

Trả lời

23

Biến công khai có thể truy cập ở mọi nơi trong mã - biến riêng tư chỉ có thể truy cập trong chính lớp đó. Trong trường hợp này, bạn đang sử dụng Employee.salary trong lớp học Employee, do đó, điều đó là tốt.

Lưu ý rằng biến là tĩnh là một vấn đề hoàn toàn riêng biệt - và các phương thức và lớp học có khả năng truy cập giống như các biến.

Có các cấp quyền truy cập khác có sẵn - protected và quyền truy cập "gói" mặc định (không thể chỉ định rõ ràng). Xem section 6.6 of the Java Language Specification for more details.

(Như một vấn đề phụ, nó cũng đáng học hỏi về những gì static nghĩa - bạn gần như chắc chắn không muốn các biến này là tĩnh học, khi họ áp dụng cho mỗiEmployee chứ không phải là Employee khái niệm nói chung. đó là lẻ cho DEPARTMENT là một hằng số ở đây, quá.)

+0

OK.Thanks a TON :) –

+0

Tôi không nghĩ rằng chúng tôi cần biến tĩnh riêng tư – Sameer

+0

@Sameer: ​​I * hoàn toàn * không đồng ý. Trong khi tôi có xu hướng không thích biến tĩnh nói chung, tôi chắc chắn sẽ không tuyên bố rằng họ là * không bao giờ * cần thiết. Là các biến tĩnh duy nhất mà bạn đã từng sử dụng hằng số? (Thậm chí hằng số có thể tốt hơn là riêng tư, đôi khi ...) –

1

Rõ ràng, bạn không thể truy cập private biến tĩnh từ bên ngoài lớp học và bạn có thể truy cập public biến tĩnh từ mọi nơi.

+0

Xem lại. Mức lương biến là private.but nếu nó là riêng tư như thế nào có thể dòng này "public static void main (String args []) { salary = 1000;" lương truy cập? –

+2

@Androidmaid: Vì bạn đang truy cập nó từ trong cùng một lớp (Employee). –

+0

với máy tính/công nghệ ngày nay, một bộ nhớ nhỏ sẽ không gây hại gì – BeyondProgrammer

25
  • một biến public có thể truy cập từ bất cứ nơi nào (tốt, bất cứ nơi nào mà lớp có thể truy cập).

  • Chỉ có thể truy cập vào biến số private bên trong lớp học.

  • Biến số static thuộc về lớp học chứ không phải là phiên bản của lớp học.

  • Lưu ý rằng biến số DEPARTMENT cũng là final, có nghĩa là nó không thể sửa đổi sau khi được đặt. Đây là điều quan trọng ở đây vì đó là những gì tiết kiệm này từ mã xấu - biến là một hằng số vì vậy nó là okay để cung cấp cho những thứ bên ngoài lớp truy cập vào nó.

+0

GREAT.Tôi có một sự nhầm lẫn về cuối cùng. –

3
private static double salary 

có sẵn chỉ trong lớp và có thể được truy cập như

salary or Employee.salary 

Trong khi

public static final String DEPARTMENT 

thể được truy cập từ bên ngoài của lớp này quá như sau

Employee.DEPARTMENT 
3

Tĩnh công cộng - có thể được truy cập từ bên trong lớp cũng như bên ngoài lớp học.

Riêng tĩnh - chỉ có thể truy cập từ bên trong lớp học.

Tĩnh được coi là chống OO trong OOPS.

ví dụ: chuỗi tĩnh riêng x; Chỉ có thể truy cập trong lớp

tĩnh công cộng Chuỗi x; trong lớp Dog

có thể được truy cập từ mọi nơi với Dog.x;

Mã hóa hạnh phúc!

Các vấn đề liên quan