2011-01-12 23 views
15

Tôi có hai lớp học trong hai gói khác nhau. Đối với một lớp, tôi đã định nghĩa một hàm tạo mà không thiết lập công cụ sửa đổi truy cập cho nó. Tôi muốn khởi tạo một đối tượng của lớp này trong một gói khác và nhận được lỗi 'the constructor xxx() is not visible'.Các nhà thầu Java không phải là công khai theo mặc định?

Nếu tôi xác định quyền truy cập đã sửa đổi thành public thì không sao. Tôi nghĩ rằng các nhà xây dựng được công khai theo mặc định?

+0

Trình xây dựng lớp là gói riêng tư theo mặc định. Enum constructors là private theo mặc định. – Boann

Trả lời

18

không truy cập specifier! = Công

Không Modifier là gói tin. kiểm tra doc

+0

Câu trả lời là OK nhưng tài liệu được liên kết không đề cập đến c'tors mặc định. –

+1

@Bob bạn có thấy _no modifier_ không? –

+0

nhưng trong giao diện tất cả các phương pháp là trừu tượng công khai ngay cả khi bạn đặt công khai hay không –

13

Không, chúng không có. Chúng có khả năng hiển thị gói theo mặc định.

2

Khi bạn không viết công cụ sửa đổi truy cập, nó được đặt thành mặc định, có nghĩa là gói riêng tư. Ví dụ. không có lớp nào ngoài gói có thể truy cập nó.

1

Không. Họ có thông số truy cập mặc định. nghĩa là chúng có khả năng hiển thị gói.

1

Bạn có thể sử dụng công cụ sửa đổi truy cập trong khai báo của hàm tạo để kiểm soát các lớp khác có thể gọi hàm tạo. Nếu bạn không khai báo hàm khởi tạo một cách rõ ràng là công khai, nó chỉ hiển thị trong cùng một gói mà nó được khai báo (truy cập gói).

7

Quyền truy cập là (err ...) truy cập mặc định theo mặc định. Còn được gọi là gói riêng tư. Hãy xem xét: nếu chúng là public theo mặc định, làm cách nào bạn cho biết rằng một hàm tạo không phải là public nhưng thực ra là gói riêng tư? Không có từ khóa nào tương ứng với gói riêng tư để chỉ ra điều đó.

1

Trong một lớp, tất cả phương thức mà không có công cụ sửa đổi truy cập đều có khả năng hiển thị gói. Tuy nhiên, trong các phương thức giao diện luôn có khả năng hiển thị công khai.

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