Video: Android 101 by Fred Widjaja 2024
Anda boleh menetapkan akses untuk medan dan kaedah dalam aplikasi Android anda. Kelas Java boleh mempunyai sama ada akses awam atau akses bukan awam (lalai). Tetapi seorang ahli kelas mempunyai empat kemungkinan: awam, swasta, lalai, dan dilindungi.
Bidang dan kaedah kelas adalah ahli kelas.
Berikut adalah cara capaian anggota:
- Ahli lalai kelas (seorang ahli yang pengisytiharannya tidak mengandungi kata-kata
awam
,swasta
, ataudilindungi
) boleh digunakan oleh mana-mana kod di dalam pakej yang sama dengan kelas itu. - Ahli peribadi kelas tidak boleh digunakan dalam mana-mana kod di luar kelas.
- Ahli umum sesuatu kelas boleh digunakan di mana sahaja kelas itu sendiri boleh digunakan; iaitu:
- Mana-mana program dalam mana-mana pakej boleh merujuk kepada ahli awam kelas awam.
- Untuk program untuk merujuk ahli awam kelas capaian lalai, program mesti berada di dalam pakej yang sama seperti kelas.
Untuk melihat peraturan ini dalam tindakan, semak kelas awam dalam kod ini. Pake pakej
. allyourcode. bank;
awam Akaun kelas {
awam Pelanggan string;
private int internalIdNumber;
Alamat perantisan;
String phone;
awam int socialSecurityNumber;
int accountType;
keseimbangan berganda; Int
awam int findById (int internalIdNumber) {
Account foundAccount = baru Account ();
// Kod untuk mencari akaun pergi di sini.
kembali dijumpaiAccount. internalIdNumber;
}
}
Kod menggunakan
Akaun
kelas dan medannya.
Mari lihat apa yang berlaku dengan pakej yang berbeza.
Merujuk kepada kelas awam dalam pakej yang berbeza.Mesej ralat menunjukkan beberapa masalah dengan kod. Berikut adalah senarai fakta mengenai kedua-dua kepingan kod ini:
- Kelas
UseAccoun
t berada dalam pakej yang sama dengan kelasAkaun
. - Kelas
UseAccount
boleh membuat pembolehubah jenisAkaun
. - Kod kelas
UseAccount
boleh merujuk kepada medanpelangganName
awamAkaun
dan ke alamatkelas.
Kelas - UseAccount
tidak boleh merujuk kepada kelas
internalIdNumberswasta kelas
Akaun, walaupun
UseAccountdan
berada dalam pakej yang sama.
Kelas - UseAccountFromOutside
tidak dalam pakej yang sama dengan kelas
Akaun.
Kelas - UseAccountFromOutside
boleh membuat pembolehubah jenis
Akaun. (An
impordeklarasi membuat anda tidak perlu mengulangi
com allyourcode bank.>UseAccountFromOutside
kod kelas boleh merujuk kepada medan - pelangganName
awam
Akaunkelas.
Kod kelasUseAccountFromOutside
tidak boleh merujuk kepada medan - alamat
bidang
Akaunatau ke medan
internalIdNumberkelas.
Sekarang periksa kelas bukan awam dalam kod ini. Pake pakej. allyourcode. permainan;
kelas Sprite {
awam
Nama rentetan;
Imej rentetan;
double distanceFromLeftEdge, distanceFromTop; gerak bergandaAcross, motionDown;
private
int renderingValue;
void render () {
if (renderingValue == 2) { // Do stuff here
}
}
}
Code uses the
Sprite Kelas
dan bidangnya.
Merujuk kepada kelas akses lalai dalam pakej yang sama.
Mari lihat apa yang berlaku dengan pakej yang berbeza.
Merujuk kepada kelas akses lalai dalam pakej yang berbeza.
Kelas
UseSpriteberada dalam pakej yang sama dengan kelas
- Sprite
.
KelasUseSprite
boleh membuat pembolehubah jenis - Sprite
.
Kod kelasUseSprite
boleh merujuk kepada medan - nama
awam
Spritedan kepada
jarakFromTopkelas.
KelasUseSprite
tidak boleh merujuk kepada kelas Sprite - swasta
Kelas
UseSpriteFromOutsidetidak dalam pakej yang sama dengan kelas
Sprite.
KelasUseSpriteFromOutside
tidak boleh membuat pembolehubah jenis - Sprite
. (Bahkan pengisytiharan
importdapat menyimpan Anda dari mesej ralat di sini.)
Di dalam kelas - UseAccountFromOutside
, rujukan ke
sprite. nama, sprite. jarakFromTop, dan
sprite. renderingValuesemuanya tidak bermakna kerana pemboleh ubah
sprite - tidak mempunyai jenis.