Java での C 'friend' 概念の複製
C では、'friend' 概念により、異なるパッケージ内のクラスが非パブリックにアクセスできるようになります他のクラスのメンバー。 Java には直接同等のものはありませんが、ネストされたクラスを使用する賢い回避策が提供されます。
実装
異なるパッケージの 2 つのクラス、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 の Friend クラス機能を模倣できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。