Chỉ cần tự hỏi liệu các biến cấp lớp riêng có được kế thừa không? Trong C#Các biến cấp lớp riêng có được kế thừa không?
Trả lời
Có, nhưng chúng không thể truy cập được, do đó, nhìn vào nó, bạn có thể thành thật nói rằng chúng không được kế thừa. Nhưng có họ thực sự là
Tùy thuộc vào ngôn ngữ, nhưng nói chung, không - chúng chỉ có thể truy cập được trong lớp mà chúng được xác định.
Nhưng chúng thường là một phần của cá thể (ngay cả khi ngôn ngữ ngăn truy cập). –
Chúng được kế thừa, nhưng từ khóa "riêng tư" có nghĩa là chỉ có lớp mà chúng được khai báo mới có thể truy cập chúng. Điều này loại trừ các lớp con. Tuy nhiên, vì một thể hiện của một phân lớp chứa siêu lớp của chính nó, chúng vẫn còn đó. Bạn chỉ không thể nhìn thấy chúng trực tiếp.
Nếu đang tìm trường chỉ có lớp khai báo và lớp con có thể thấy, bạn có thể sử dụng từ khóa "được bảo vệ" thay vì "riêng tư" và phải cung cấp chức năng bạn đang tìm kiếm.
Chúng là, mặc dù chúng không thể truy cập trực tiếp.
public class BaseClass
{
private const int _aNumber = 5;
public int ReturnANumber() { return _aNumber; }
}
public class DClass : BaseClass
{
public void SomeMethod()
{
// This is indirectly accessing a private implemented in the class
// this derives from, but existing inside this class.
int numbery = this.ReturnANumber();
}
}
public class Whatever
{
public void AMethod(DClass someDClass)
{
int thisIsNumberFive = someDClass.ReturnANumber();
}
}
Chúng được kế thừa theo một nghĩa nào đó. Không gian bộ nhớ được cấp phát cho chúng và chúng "tồn tại" trong cá thể lớp con. Tuy nhiên, lớp con không thể truy cập biến đó. (Nếu bạn muốn phân lớp truy cập biến lớp cơ sở, hãy sử dụng protected
thay vì private
.)
Đây là phương thức trong lớp cơ sở cần có thể đặt biến riêng (hoặc không sử dụng được) cho nó). Những phương thức này cũng có sẵn trên một cá thể của lớp con - và trên thực tế, cá thể lớp con sẽ có thể được coi là một cá thể của lớp cơ sở (bắt buộc để đáp ứng các Liskov substitution principle). Nếu các biến riêng không được kế thừa, hành vi của các phương thức lớp cơ sở sẽ thay đổi hoặc phá vỡ.
Có, chúng được kế thừa nhưng trình biên dịch cấm truy cập chúng. Aalas, bạn vẫn có thể nhận được chúng -không được đề nghị thông qua sự phản ánh hoặc thông qua thủ thuật AMethod() đẹp mắt của bạn.
Chúng được kế thừa nhưng không thể truy cập được hoặc chỉ có thể truy cập được trong lớp nơi chúng được khai báo. Bạn có thể truy cập chúng ở lớp tiểu bằng hai cách
- tuyên bố họ được bảo vệ chứ không phải sau đó tin
viết một phương pháp nào đó trả về giá trị của rằng biến tin
nhưng không có cách nào mà bạn trực tiếp truy cập biến riêng trong phân lớp.
- 1. Biến riêng tư trong các mẫu thử được thừa kế
- 2. C#: Thừa hưởng các thành viên tĩnh riêng cho các lớp thừa kế
- 3. Tạo một lớp không được thừa kế
- 4. Trường tĩnh có được kế thừa không?
- 5. Có nhiều Thừa kế được phép ở cấp lớp trong PHP không?
- 6. Ruby: Thừa kế mã hoạt động với các biến lớp
- 7. Hiển thị các typedef được thừa kế riêng cho các lớp lồng nhau
- 8. Truy cập các biến lớp kế thừa trong java
- 9. Biến thể hiện lớp Ruby và thừa kế
- 10. contraints Generic trên các lớp thừa kế
- 11. Thừa kế C#. lớp được thừa kế từ lớp cơ sở
- 12. tại sao lớp dẫn xuất kế thừa các thành viên riêng của lớp cơ sở?
- 13. thay thế thừa kế đa cấp
- 14. Tại sao bạn không thể kế thừa từ một lớp có hàm tạo riêng tư?
- 15. C# Thừa kế lớp
- 16. Ẩn các thành viên được thừa kế
- 17. Tại sao tôi không thể kế thừa các lớp tĩnh?
- 18. thừa kế lớp vỏ Scala
- 19. Lớp thành viên có thể kế thừa từ cấp độ gốc không?
- 20. Truy cập biến kế thừa từ lớp cha templated
- 21. Set lớp thừa kế sau delcaration lớp HOẶC thiết lập lớp thừa kế trên lớp const_set
- 22. Tránh thừa kế song song phân cấp
- 23. Sửa đổi biến thừa kế lớp trong Python
- 24. Có [Serializable] hoạt động cho các lớp được kế thừa không?
- 25. Mapping thừa kế đa cấp trong Hibernate
- 26. Thừa kế bảng đơn hoặc thừa kế bảng lớp?
- 27. Làm thế nào để không kế thừa một biến trong các lớp C++
- 28. Ormlite có hỗ trợ kế thừa không?
- 29. Thừa kế tài liệu trong kế thừa lớp Python
- 30. Lớp được thừa kế từ lớp không có hàm tạo mặc định
Bằng ngôn ngữ nào? –
trong C# xin lỗi về điều đó –
có thể trùng lặp của [Các thành viên tư nhân được kế thừa trong C#?] (Http://stackoverflow.com/questions/2950820/are-private-members-inherited-in-c) –