Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mensimulasikan Fungsi `rakan` C di Jawa?

Bagaimanakah Saya Boleh Mensimulasikan Fungsi `rakan` C di Jawa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-17 00:28:25247semak imbas

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

Mensimulasikan Konsep 'rakan' C dalam Java

Untuk memberikan akses terus kepada kaedah persendirian antara kelas daripada pakej yang berbeza di Jawa, pertimbangkan teknik berikut:

Langkah 1: Buat "Tandatangan Keselamatan" Kelas

Dalam pakej kelas yang inginkan akses, tentukan kelas awam yang bertindak sebagai "tandatangan keselamatan". Kelas ini hanya boleh diakses dalam pakejnya.

Langkah 2: Hadkan Pembina

Jadikan pembina kelas tandatangan keselamatan peribadi. Ini memastikan bahawa hanya kelas dalam pakejnya boleh membuat instantiatenya.

Langkah 3: Buat Rujukan Statik

Isytihar pembolehubah statik jenis kelas tandatangan keselamatan. Ini membolehkan akses mudah kepada objek tandatangan.

Langkah 4: Tentukan Kaedah Sasaran

Dalam kelas yang ingin membenarkan akses terhad, tentukan kaedah yang memerlukan kelas tandatangan keselamatan sebagai hujah. Kaedah ini harus mempunyai kebenaran akses yang sesuai, seperti awam atau dilindungi.

Contoh:

Pertimbangkan senario di mana kelas Romeo (dalam pakej Montague) mahu mengakses bukan- kaedah awam kelas Juliet (dalam pakej 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);
    }
}

Dalam contoh ini , kelas Romeo.Love bertindak sebagai tandatangan keselamatan. Hanya Romeo yang boleh membinanya kerana pembina peribadinya. Kaedah peluk dalam Juliet memerlukan contoh Romeo.Love untuk melaksanakan, yang boleh disediakan oleh Romeo. Ini menghalang akses tanpa kebenaran daripada kelas lain di luar pakej Montague.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Fungsi `rakan` C di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn