Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kefungsian Kelas Rakan Java Mimic C?

Bagaimanakah Kefungsian Kelas Rakan Java Mimic C?

Patricia Arquette
Lepaskan: 2024-12-24 16:53:22
asal
590 orang telah melayarinya

How Can Java Mimic C  's Friend Class Functionality?

Menerap Konsep 'rakan' C dalam Java

Dalam C , konsep 'rakan' membenarkan kelas dalam pakej yang berbeza untuk mengakses bukan awam ahli kelas lain. Java tidak mempunyai persamaan langsung, tetapi ia menyediakan penyelesaian yang bijak menggunakan kelas bersarang.

Pelaksanaan

Pertimbangkan dua kelas, Romeo dan Juliet, daripada pakej yang berbeza. Romeo ingin mengakses kaedah bukan umum Juliet tanpa mengklasifikasikannya. Begini cara untuk mencapainya menggunakan kelas bersarang:

// 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
    }
}
Salin selepas log masuk

Dalam contoh ini:

  • Juliet.cuddleAllowed ialah kelas bersarang dengan pembina peribadi. Hanya Juliet boleh membuat seketika.
  • Juliet.cuddle() adalah peribadi tetapi boleh diakses secara dalaman atau daripada Juliet.CuddleAllowed tika.
  • Romeo menggunakan tika cuddleAllowed untuk mengakses cuddle(). Juliet akan berpelukan hanya jika instance disediakan oleh Romeo.

Atas ialah kandungan terperinci Bagaimanakah Kefungsian Kelas Rakan Java Mimic C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan