例如,我有A類,B類,C類 A類有5個實例變量。 B類和C類都擴展到A類。 B類可以訪問所有成員,而C類只能訪問2個成員?只要它們在同一個包中。是否可以限制某個類的某些成員訪問另一個類而不是所有其他類?
1
A
回答
1
這是可能的。製作3個字段private
並製作B
a static
嵌套類A
。然後B
可以訪問A
的所有成員,如果您投到A
。像這樣:
public class A {
private int a = 1;
private int b = 2;
private int c = 3;
int d = 4;
int e = 5;
public static void main(String[] args) {
new B().test();
}
private static class B extends A {
private void test() {
System.out.println(((A) this).a);
}
}
}
+0
這似乎是可行的,所以我試了一下。靜態內部子類仍然無法訪問其外部超類的私有實例變量。這是在Java7中。 – gknicker
+0
@gknicker謝謝。我糾正了我的答案。 –
相關問題
- 1. 選擇具有某個類而不是其他類的元素
- 2. 是否可以訪問接口類型的其他成員?
- 3. boost :: apply_visitor不是[某些]類的成員
- 4. Dictionary.ElementAt方法在某些類中可見,但不是其他類。
- 5. C++:有沒有辦法限制對某些類的某些方法的訪問,而不會暴露其他私有成員?
- 6. 如何檢查某個類的實例是否可以訪問另一個類中的方法?
- 7. 如何讓某些類別具有明細而其他類別不是?
- 8. 重寫在派生類中某些重載而不是其他
- 9. 如何從其他類訪問某個類的屬性?
- 10. jQuery - 你可以檢查一個類是否有另一個類?
- 11. 訪問另一個類的成員
- 12. PHP訪問另一個類中某個類的對象
- 13. 如何使只有某些類可以訪問類
- 14. Subversion是否可以限制開發人員訪問某些文件?
- 15. 從其他類訪問私有成員
- 16. 爲什麼在compareTo中可以訪問某個類的私有成員?
- 17. 類的對象可以是其他類的成員變量嗎?
- 18. 防止朋友函數訪問某個類的私有成員
- 19. Scala TypeTags或Manifest:是否可以確定某個類型是否是Value類?
- 20. 是否可以確定某個類型是否是範圍枚舉類型?
- 21. 如何知道某個類是否可以用作靜態類?
- 22. 是否可以從XmlSerializer序列化中排除某些類型的成員?
- 23. 將一個類的所有成員添加到另一個類
- 24. 派生類可以訪問其基類的私有成員
- 25. 是否可以強制參數成爲某種類型的鍵?
- 26. 是否可以從另一個類訪問變量?
- 27. 如何處理類別層次結構,其中某些子類是IDisposable而其他類不是?
- 28. 從另一個類訪問類私有成員
- 29. 如何確定一個類是否是其他類的子類?
- 30. 是否可以重寫某個類型的現有Debug實現?
不,這是不可能的。你可能想重新設計你的課程。或者,請不要使用C類的「禁止」成員。 –
不,這違背了繼承和糟糕設計的氣味。 – Brian
我希望看到更多關於你想要完成的事情。另外,如果'C'在同一個包中,爲什麼要限制訪問三個成員 - 而不是僅僅是自我約束?你是否擔心後來修改課程並搞亂了某些東西?不像有些人,我不願意宣稱這是一個「糟糕的設計」而沒有看到細節 - 我可以設想在某些情況下這可能是合法的設計。但我想看更多的信息。 – ajb