Friend-Klasse in Java

Sheeraz Gul 12 Oktober 2023
Friend-Klasse in Java

Die Friend-Klasse ist die Funktionalität von C++, die verwendet wird, um auf die nicht öffentlichen Mitglieder einer Klasse zuzugreifen. Java unterstützt das Schlüsselwort friend nicht, aber wir können die Funktionalität erreichen.

Dieses Tutorial zeigt, wie Sie eine Friend-Klasse in Java erstellen.

Friend-Klasse in Java

Das Freund-Konzept kann auch in Java implementiert werden. Zum Beispiel zwei Kollegen aus unterschiedlichen Abteilungen eines Unternehmens.

Beide Kollegen kennen sich nicht, aber sie müssen für eine Arbeit zusammenarbeiten. Stellen wir einen Mitarbeiter als Jack und den anderen als Michelle ein, basierend auf einem Freundschaftsmuster.

Wir müssen zwei Pakete erstellen und beide Klassen implementieren, um dieses Beispiel zu implementieren.

Die Klasse Jack im Department(package) Delftstack1:

package Delftstack1;

import Delftstack2.Michelle;

public final class Jack {
  static {
    // Declare classes in the Delftstack2 package as 'friends'
    Michelle.setInstance(new Michelle_Implement());
  }

  // Constructor is Only accessible by 'friend' classes.
  Jack() {}

  // This Method is Only accessible by 'friend' classes.
  void HelloDelftstack() {
    System.out.println("Hello! I am Jack from Delftstack");
  }

  static final class Michelle_Implement extends Michelle {
    protected Jack createJack() {
      return new Jack();
    }

    protected void sayHello(Jack jack) {
      jack.HelloDelftstack();
    }
  }
}

Die Klasse Michelle im Department(paket) Delftstack2:

package Delftstack2;

import Delftstack1.Jack;

public abstract class Michelle {
  private static Michelle instance;

  static Michelle getInstance() {
    Michelle a = instance;
    if (a != null) {
      return a;
    }

    return createInstance();
  }

  private static Michelle createInstance() {
    try {
      Class.forName(Jack.class.getName(), true, Jack.class.getClassLoader());
    } catch (ClassNotFoundException e) {
      throw new IllegalStateException(e);
    }

    return instance;
  }

  public static void setInstance(Michelle michelle) {
    if (instance != null) {
      throw new IllegalStateException("Michelle instance already set");
    }

    instance = michelle;
  }

  protected abstract Jack createJack();

  protected abstract void sayHello(Jack jack);
}

Die Klasse zum Implementieren der Hauptmethode:

package Delftstack2;

import Delftstack1.Jack;

public final class Friend_Class {
  public static void main(String[] args) {
    Michelle michelle = Michelle.getInstance();
    Jack jack = michelle.createJack();
    michelle.sayHello(jack);
  }
}

Der obige Code implementiert die Friend-Class-Funktionalität in Java mit zwei Klassen in unterschiedlichen Paketen. Die Klasse Michelle fungiert als Freundesklasse, die auf die Mitglieder der Klasse Jack zugreift.

Ausgang:

Hello! I am Jack from Delftstack
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java Class