Tôi đang làm bài tập về nhà cho lớp thiết kế hướng đối tượng của mình và tôi đang gặp rắc rối với các đối tượng đồng hành của Scala. Tôi đã đọc ở một vài nơi mà các đối tượng đồng hành được cho là có quyền truy cập vào các phương thức riêng tư của lớp đồng hành của họ, nhưng tôi dường như không thể làm cho nó hoạt động được. (Cũng giống như một lưu ý, thịt của nhiệm vụ phải làm với việc thực hiện một cây tìm kiếm nhị phân, vì vậy tôi không chỉ yêu cầu câu trả lời ...)Tại sao tôi không thể truy cập các phương thức lớp riêng trong đối tượng đồng hành của lớp trong Scala?
Tôi có một đối tượng được cho là tạo ra một thể hiện lớp riêng tư của tôi, BstAtlas (Bst cũng được định nghĩa trong đối tượng Atlas, lấy nó ra cho rõ ràng):
object Atlas {
def focusRoom(newRoom:Room,a:Atlas):Atlas = a.helpFocusRoom(newRoom);
abstract class Atlas {
...
protected def helpFocusRoom(n:Room):Atlas;
...
}
private class BstAtlas(bst:Bst) extends Atlas {
...
protected def helpFocusRoom(newRoom:Room):Atlas = ...
// uses some of bst's methods
...
}
}
Nhưng khi tôi đi để biên dịch, tôi nhận được lỗi sau:
Question23.scala:15: error: method helpFocusRoom cannot be accessed in Atlas.Atlas a.helpFocusRoom(newRoom);
các function helpFocusRoom cần phải được ẩn, nhưng tôi không biết làm thế nào để ẩn nó và vẫn có quyền truy cập vào nó bên trong của đối tượng đồng hành.
Có ai cho tôi biết tôi đang làm gì sai ở đây không?
wow .. Tôi không bao giờ biết có thẻ "bài tập về nhà" – pavanred