Heim >Backend-Entwicklung >C++ >Wie kann ich die „Friend'-Funktionalität von C in Java simulieren?

Wie kann ich die „Friend'-Funktionalität von C in Java simulieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-17 00:28:25248Durchsuche

How Can I Simulate C  's `friend` Functionality in Java?

Simulation des C-„Friend“-Konzepts in Java

Um direkten Zugriff auf private Methoden zwischen Klassen aus verschiedenen Paketen in Java zu gewähren, berücksichtigen Sie Folgendes Folgende Technik:

Schritt 1: Erstellen Sie eine „Sicherheitssignatur“ Klasse

Definieren Sie innerhalb des Pakets der Klasse, die Zugriff wünscht, eine öffentliche Klasse, die als „Sicherheitssignatur“ fungiert. Auf diese Klasse sollte nur innerhalb ihres Pakets zugegriffen werden können.

Schritt 2: Konstruktor einschränken

Machen Sie den Konstruktor der Sicherheitssignaturklasse privat. Dadurch wird sichergestellt, dass nur die Klasse innerhalb ihres Pakets es instanziieren kann.

Schritt 3: Erstellen Sie eine statische Referenz

Deklarieren Sie eine statische Variable vom Typ Sicherheitssignaturklasse. Dies ermöglicht einen einfachen Zugriff auf das Signaturobjekt.

Schritt 4: Definieren Sie die Zielmethode

Definieren Sie in der Klasse, die eingeschränkten Zugriff zulassen möchte, eine Methode, die erforderlich ist die Sicherheitssignaturklasse als Argument. Diese Methode sollte über entsprechende Zugriffsberechtigungen verfügen, z. B. öffentlich oder geschützt.

Beispiel:

Stellen Sie sich ein Szenario vor, in dem die Klasse Romeo (im Paket Montague) auf nicht- öffentliche Methoden der Klasse Juliet (im Paket Capulet).

Juliet.java:

package capulet;

public class Juliet {

    public void cuddle(Romeo.Love love) {
        if (love == null) {
            throw new NullPointerException();
        }
        System.out.println("O Romeo, Romeo, wherefore art thou Romeo?");
    }
}

Romeo.java:

package montague;

public class Romeo {

    public static final class Love { private Love() {} }
    private static final Love love = new Love();

    public void cuddleJuliet() {
        Juliet.cuddle(love);
    }
}

In diesem Beispiel , fungiert die Klasse Romeo.Love als Sicherheitssignatur. Aufgrund seines privaten Erbauers kann es nur Romeo bauen. Die Methode „cuddle“ in „Juliet“ erfordert zur Ausführung eine Instanz von Romeo.Love, die Romeo bereitstellen kann. Dies verhindert unbefugten Zugriff von anderen Klassen außerhalb des Montague-Pakets.

Das obige ist der detaillierte Inhalt vonWie kann ich die „Friend'-Funktionalität von C in Java simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn