Java에서 C 'friend' 개념 복제
C에서 'friend' 개념을 사용하면 다양한 패키지의 클래스가 비공개 액세스에 액세스할 수 있습니다. 다른 클래스의 구성원. Java에는 직접적인 대응 기능이 없지만 중첩 클래스를 사용하여 영리한 해결 방법을 제공합니다.
구현
서로 다른 패키지의 Romeo와 Juliet이라는 두 클래스를 생각해 보세요. Romeo는 Juliet을 하위 클래스로 분류하지 않고 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!