在Java 中複製C 的「friend」概念
在C 中,「friend」概念允許不同套件中的類別存取非公共物件其他班級的成員。 Java 缺乏直接的等效項,但它提供了一種使用巢狀類別的巧妙解決方法。
實作
考慮來自不同套件的兩個類,Romeo 和 Juliet。羅密歐希望訪問朱麗葉的非公共方法而不將其子類化。以下是如何使用巢狀類別來實現它:
// Juliet's package public class Juliet { private void cuddle() { System.out.println("O Romeo, Romeo, wherefore art thou Romeo?"); } // Signature security for cuddle public static class CuddleAllowed { private CuddleAllowed() {} } private static final CuddleAllowed cuddleAllowed = new CuddleAllowed(); public void cuddle(Juliet.CuddleAllowed cuddle) { cuddle(); // Juliet can cuddle herself if (cuddle == cuddleAllowed) { System.out.println("Only Romeo can cuddle Juliet."); } } } // Romeo's package public class Romeo { public static void cuddleJuliet() { Juliet juliet = new Juliet(); juliet.cuddle(Juliet.cuddleAllowed); // Romeo can cuddle Juliet } }
在此範例中:
以上是Java 如何模仿 C 的友元類別功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!