在 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中文网其他相关文章!