Rumah > Java > javaTutorial > teks badan

Bolehkah Konsep 'Rakan' Java Mimic C untuk Akses Silang Pakej?

Mary-Kate Olsen
Lepaskan: 2024-11-08 07:23:02
asal
827 orang telah melayarinya

Can Java Mimic C  's 'Friend' Concept for Cross-Package Access?

Mereplikasi Konsep C 'rakan' dalam Java

Dalam pengaturcaraan berorientasikan objek, konsep 'rakan' membenarkan kelas dalam pakej yang berbeza untuk mengakses kaedah bukan awam masing-masing. Dalam C , ciri ini dicapai melalui kata kunci 'rakan'.

Cabaran:

Di Jawa, tidak ada persamaan langsung dengan konsep 'rakan'. Bolehkah pengaturcara Java mereplikasi fungsi ini untuk membenarkan akses silang pakej kepada kaedah bukan awam?

Penyelesaian:

Walaupun Java tidak mempunyai 'rakan' terbina dalam ciri, teknik bijak boleh digunakan untuk mencapai tingkah laku yang serupa.

Keselamatan Tandatangan dengan Nested Kelas:

Buat kelas bersarang dalam setiap kelas sasaran yang mewakili rahsia kongsi atau 'tandatangan.' Kelas ini telah mengehadkan akses kepada pembinanya, memastikan bahawa hanya tika yang dibenarkan boleh dibuat.

Contoh:

Pertimbangkan dua kelas, Romeo dan Juliet, daripada pakej yang berbeza. Untuk membenarkan Romeo mengakses kaedah bukan awam Juliet, Juliet mengisytiharkan kelas TrueLove bersarang dengan pembina peribadi.

// Juliet
public class Juliet {
    private static class TrueLove {}

    public void cuddle(TrueLove love) {
        // Access to this method is restricted to Romeo through the TrueLove instance
    }
}
Salin selepas log masuk

Menghadkan Akses kepada Tandatangan:

Romeo mentakrifkan Cadangan kelas bersarangnya sendiri dengan pembina awam. Walau bagaimanapun, ia juga mempunyai rujukan statik kepada kelas TrueLove Juliet, menyediakan akses terkawal kepada tandatangan.

// Romeo
public class Romeo {
    private static class Proposal {
        private static final TrueLove love = new TrueLove();
    }

    public static void cuddleJuliet() {
        Juliet.cuddle(Proposal.love);
    }
}
Salin selepas log masuk

Pengesahan dan Keselamatan:

Apabila Romeo memanggil cuddleJuliet( ), ia meluluskan contoh Proposal.love, mengesahkan kebenarannya untuk mengakses kaedah bukan awam Juliet. Jika mana-mana kelas lain cuba mengakses TrueLove secara langsung, ia akan gagal disebabkan oleh pembina persendirian, memastikan keselamatan.

Teknik ini membolehkan pengaturcara Java mensimulasikan konsep 'rakan' C dengan menggunakan kelas bersarang untuk menyekat akses kepada perkongsian rahsia dan sahkan ketulenan pemanggil.

Atas ialah kandungan terperinci Bolehkah Konsep 'Rakan' Java Mimic C untuk Akses Silang Pakej?. 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