Nếu bạn kế thừa từ một hoạt động mà một số biến thành viên được khai báo, làm thế nào để bạn truy cập vào các biến thành viên này trong lớp con thực hiện kế thừa?Truy cập các biến lớp kế thừa trong java
Trả lời
public
hoặc protected
tên thành viên có thể được truy cập qua this.memberName
từ bất kỳ phương thức khởi tạo nào hoặc phương thức khởi tạo không static
hoặc trình khởi tạo.
private
hoặc thành viên cấp gói (truy cập từ phân lớp trong gói khác) không thể truy cập trực tiếp và sẽ cần truy cập thông qua giao diện không có đặc quyền chẳng hạn như public
getter.
Nếu các thành viên được khai báo private
hoặc nếu họ được khai báo với quyền truy cập mặc định (gói) và lớp con của bạn ở một lớp khác, bạn không thể truy cập các biến. Nếu người truy cập được cung cấp, bạn có thể sử dụng chúng. Nếu không, chúng không thể truy cập được.
Nếu các thành viên đã được tuyên bố protected
hoặc public
, sau đó bạn truy cập chúng như thể chúng được khai báo trong lớp của riêng bạn (this.var
, hoặc chỉ var
nếu không có sự mơ hồ). Nếu bạn có một thành viên trong phân lớp có cùng tên với lớp cha, bạn có thể sử dụng super.var
để truy cập biến siêu lớp.
Dịch vụ chăm sóc người điều hành có giải thích không? –
+1 để chống lại cuộc bỏ phiếu không giải thích được. – mre
class A {
protected int a = 3;
}
class B extends A {
protected int b = 2;
void doIt() {
System.out.println("super.a:" + super.a);
System.out.println("this.b: " + this.b);
}
}
Như được người khác nói, các trường công cộng và được bảo vệ có thể truy cập thông qua this.field
từ lớp con. Các trường riêng tư của gói cũng có thể được truy cập theo cùng một cách, nhưng chỉ khi lớp con nằm trong cùng một gói với cha mẹ.
Không thể truy cập các trường riêng tư theo cách này, nhưng chúng có thể được truy cập bằng cách sử dụng Java reflection, nếu cài đặt bảo mật cho phép. Nó thường không được khuyến khích thực hành (các thành viên tư nhân thường là tư nhân vì một lý do), nhưng nó có thể hữu ích trong một số trường hợp, ví dụ truy cập các thành viên lớp riêng cho mục đích kiểm tra mã. Xem the answers to this question để biết cách sử dụng phản chiếu theo cách này.
- 1. Truy cập biến kế thừa từ lớp cha templated
- 2. Mặc định lớp kế thừa quyền truy cập
- 3. Doctrine DQL, kế thừa bảng lớp và truy cập vào các trường lớp con
- 4. Thừa kế: Truy cập vào các lớp cơ sở từ một lớp con
- 5. Doctrine2 - Sơ đồ thừa kế, truy vấn các lớp con
- 6. truy cập vào biến trong lớp bên trong trong java
- 7. Mục tiêu-C: truy cập các thuộc tính riêng trong lớp thừa kế
- 8. Có thể ẩn hoặc giảm quyền truy cập vào Phương thức kế thừa trong Java không?
- 9. Các biến cấp lớp riêng có được kế thừa không?
- 10. Ruby: Thừa kế mã hoạt động với các biến lớp
- 11. Giá trị ghi đè kế thừa thừa kế Java
- 12. Java thừa kế vs C# thừa kế
- 13. biến truy cập của lớp bên ngoài trong Java
- 14. Quy tắc ra lệnh kế thừa các biến tĩnh trong Java là gì?
- 15. Biến tĩnh Java và thừa kế và Memory
- 16. Thừa kế các trường cuối cùng trong Java?
- 17. Sửa đổi biến thừa kế lớp trong Python
- 18. Thừa kế tài liệu trong kế thừa lớp Python
- 19. Thừa kế bảng lớp trong Rails 3
- 20. Thừa kế lớp trong Python
- 21. Thừa kế lớp trong Javascript
- 22. Thiết kế ứng dụng Zend Framework - nên truy cập các biến phiên trong lớp Mô hình
- 23. OOP trong Java: Lớp thừa kế với phương pháp chuỗi
- 24. Các hàm tạo và thừa kế mặc định trong Java
- 25. Kế thừa các biến mẫu trong Mục tiêu-c
- 26. C# Thừa kế lớp
- 27. Được đồng bộ kế thừa trong Java?
- 28. Biến thể hiện lớp Ruby và thừa kế
- 29. Truy cập các biến tĩnh lớp con từ lớp cha?
- 30. thừa kế lớp vỏ Scala
Đồng thời kiểm tra xem bạn không có xung đột đặt tên: http://java.sys-con.com/node/46344 nếu bạn đang gặp phải hành vi không mong muốn – jefflunt