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 } }
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); } }
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!