جاوا
جلسه ۱۹: سطح های دسترسی در جاوا

در این جلسه، با اعضای سطح دسترسی
از خارج از کلاس نمی توان مستقیماً به یک عضو سطح دسترسی
دسته سطح دسترسی
دسته سطح دسترسی
این برچسب باعث می شود که کدهای درون دامنه شی (object scope) این کلاس بتوانند به عضو دارای این برچسب دسترسی مستقیم داشته باشند. به عبارت ساده تر هر جایی که به شی از این کلاس امکان دسترسی باشد به عضو سطح دسترسی
دسته
private
، public
و protected
آشنا خواهید شد.در این جلسه موارد زیر را بررسی خواهیم کرد:- سطح دسترسی
Private
یا خصوصی - سطح دسترسی
Public
یا عمومی - سطح دسترسی
Protected
یا محافظت شده - سطح دسترسی پیش فرض
سطح دسترسی Private
یا خصوصی
از خارج از کلاس نمی توان مستقیماً به یک عضو private
دسترسی داشت. هدف این است که آن عضو از دید کاربران و سایر کلاس ها پنهان شود. این امری رایج است که اعضای داده را به صورت private
اعلام کنیم زیرا نمی خواهیم داده هایمان بدون کنترل ما دستکاری شود چون ممکن است داده ها به شکل نادرستی تغییر داده شود. می توان با استفاده از کلمه کلیدی private
اعضا را خصوصی کرد.class Cop {
private int gun; // We have explicitly defined that the variable is private
// ...
}
package justice;
public class Cop {
private int gun;
public int getGun(){
return gun;
}
protected void fire(){
System.out.println("shoot!")
}
}
package crime;
import justice.*;
class Thief{
public static void main(String args[]){
Cop obj = new Cop();
obj.fire(); //Compile Time Error
}
}
کلاس Thief
یک خطای زمان کامپایل ایجاد می کند زیرا در تلاش است به متد محافظت شده ()fire
از کلاس Cop
دسترسی پیدا کند که در پکیج دیگری تعریف شده است.همانطور که گفته شد یکی از کاربرد های سطح دسترسی protected
مربوط به ارث بری کلاس ها است. ما بعداً مبحث ارث بری را پوشش خواهیم داد ، بنابراین در حال حاضر از ورود به جزئیات ارث بری خودداری خواهیم کرد.سطح دسترسی پیش فرض
اگر سطح دسترسی را مشخص نکنیم ، سطح دسترسی پیش فرض را استفاده کرده ایم. سطح دسترسی پیش فرض مشابهprotected
است. سطح دسترسی پیش فرض فقط به اعضای داخل همان پکیج امکان دسترسی می دهد. ولی سطح دسترسی protected
علاوه بر همان پکیج به کلاس های ارث بر از سایر پکیج ها هم امکان دسترسی می دهد. بنابراین ، می توان گفت که دسترسی پیش فرض محدودتر از دسترسی protected
است.ما اشاره مختصری به نحوه ایجاد اعضای داده در یک کلاس کردیم. در جلسه بعدی ، به جزئیات بیشتر در مورد این موضوع خواهیم پرداخت.Cop c = new Cop(); // Object created
c.getGun(); // Can access the gun
c.gun = 0; // This would cause an error since gun is private
سطح دسترسی Protected
یا محافظت شده
دسته protected
یا محافظت شده دسته ی خاصی است. سطح دسترسی اعضای protected
جایی بین private
(خصوصی) و public
(عمومی) قرار دارد. کاربرد اصلی برچسب protected
را می توان هنگام استفاده از وراثت ، که فرایند ایجاد کلاس هایی از کلاس های دیگر است ، یافت.پکیج برای مرتب کردن کد استفاده می شود و یک پکیج می تواند شامل چندین کلاس باشد.
به اعضای protected
یک کلاس می توان در داخل پکیج همان کلاس دسترسی داشت. ولی خارج از پکیج آن کلاس اعضای protected
آن کلاس فقط از طریق کلاس های ارث برنده از آن کلاس قابل دسترسی هستند.package justice;
public class Cop {
private int gun;
public int getGun(){
return gun;
}
protected void fire(){
System.out.println("shoot!")
}
}
package crime;
import justice.*;
class Thief{
public static void main(String args[]){
Cop obj = new Cop();
obj.fire(); //Compile Time Error
}
}
کلاس Thief
یک خطای زمان کامپایل ایجاد می کند زیرا در تلاش است به متد محافظت شده ()fire
از کلاس Cop
دسترسی پیدا کند که در پکیج دیگری تعریف شده است.همانطور که گفته شد یکی از کاربرد های سطح دسترسی protected
مربوط به ارث بری کلاس ها است. ما بعداً مبحث ارث بری را پوشش خواهیم داد ، بنابراین در حال حاضر از ورود به جزئیات ارث بری خودداری خواهیم کرد.سطح دسترسی پیش فرض
اگر سطح دسترسی را مشخص نکنیم ، سطح دسترسی پیش فرض را استفاده کرده ایم. سطح دسترسی پیش فرض مشابهprotected
است. سطح دسترسی پیش فرض فقط به اعضای داخل همان پکیج امکان دسترسی می دهد. ولی سطح دسترسی protected
علاوه بر همان پکیج به کلاس های ارث بر از سایر پکیج ها هم امکان دسترسی می دهد. بنابراین ، می توان گفت که دسترسی پیش فرض محدودتر از دسترسی protected
است.ما اشاره مختصری به نحوه ایجاد اعضای داده در یک کلاس کردیم. در جلسه بعدی ، به جزئیات بیشتر در مورد این موضوع خواهیم پرداخت.class Cop {
private int gun; // Private variable
public int getGun(){
return gun; // The private variable is directly accessible over here!
}
}
به اعضای public
کلاس می توان از طریق عملگر نقطه دسترسی پیدا کرد. به عنوان مثال ، اگر یک شی c از نوع Cop
داشته باشیم ، می توانیم به متد عمومی ()getGun
اینگونه دسترسی پیدا کنیم:Cop c = new Cop(); // Object created
c.getGun(); // Can access the gun
c.gun = 0; // This would cause an error since gun is private
سطح دسترسی Protected
یا محافظت شده
دسته protected
یا محافظت شده دسته ی خاصی است. سطح دسترسی اعضای protected
جایی بین private
(خصوصی) و public
(عمومی) قرار دارد. کاربرد اصلی برچسب protected
را می توان هنگام استفاده از وراثت ، که فرایند ایجاد کلاس هایی از کلاس های دیگر است ، یافت.پکیج برای مرتب کردن کد استفاده می شود و یک پکیج می تواند شامل چندین کلاس باشد.
به اعضای protected
یک کلاس می توان در داخل پکیج همان کلاس دسترسی داشت. ولی خارج از پکیج آن کلاس اعضای protected
آن کلاس فقط از طریق کلاس های ارث برنده از آن کلاس قابل دسترسی هستند.package justice;
public class Cop {
private int gun;
public int getGun(){
return gun;
}
protected void fire(){
System.out.println("shoot!")
}
}
package crime;
import justice.*;
class Thief{
public static void main(String args[]){
Cop obj = new Cop();
obj.fire(); //Compile Time Error
}
}
کلاس Thief
یک خطای زمان کامپایل ایجاد می کند زیرا در تلاش است به متد محافظت شده ()fire
از کلاس Cop
دسترسی پیدا کند که در پکیج دیگری تعریف شده است.همانطور که گفته شد یکی از کاربرد های سطح دسترسی protected
مربوط به ارث بری کلاس ها است. ما بعداً مبحث ارث بری را پوشش خواهیم داد ، بنابراین در حال حاضر از ورود به جزئیات ارث بری خودداری خواهیم کرد.سطح دسترسی پیش فرض
اگر سطح دسترسی را مشخص نکنیم ، سطح دسترسی پیش فرض را استفاده کرده ایم. سطح دسترسی پیش فرض مشابهprotected
است. سطح دسترسی پیش فرض فقط به اعضای داخل همان پکیج امکان دسترسی می دهد. ولی سطح دسترسی protected
علاوه بر همان پکیج به کلاس های ارث بر از سایر پکیج ها هم امکان دسترسی می دهد. بنابراین ، می توان گفت که دسترسی پیش فرض محدودتر از دسترسی protected
است.ما اشاره مختصری به نحوه ایجاد اعضای داده در یک کلاس کردیم. در جلسه بعدی ، به جزئیات بیشتر در مورد این موضوع خواهیم پرداخت.سطح دسترسی Public
یا عمومی
این برچسب باعث می شود که کدهای درون دامنه شی (object scope) این کلاس بتوانند به عضو دارای این برچسب دسترسی مستقیم داشته باشند. به عبارت ساده تر هر جایی که به شی از این کلاس امکان دسترسی باشد به عضو public
این شی نیز امکان دسترسی وجود دارد.متدهای عضو کلاس ها معمولاً public
هستند زیرا متدها رابطی را فراهم می کنند که برنامه از طریق آن می تواند با اعضای private
(خصوصی) کلاس ارتباط برقرار کند.اعضای Public
(عمومی) را می توان با استفاده از کلمه کلیدی public
مشخص کرد.class Cop {
private int gun; // Private variable
public int getGun(){
return gun; // The private variable is directly accessible over here!
}
}
به اعضای public
کلاس می توان از طریق عملگر نقطه دسترسی پیدا کرد. به عنوان مثال ، اگر یک شی c از نوع Cop
داشته باشیم ، می توانیم به متد عمومی ()getGun
اینگونه دسترسی پیدا کنیم:Cop c = new Cop(); // Object created
c.getGun(); // Can access the gun
c.gun = 0; // This would cause an error since gun is private
سطح دسترسی Protected
یا محافظت شده
دسته protected
یا محافظت شده دسته ی خاصی است. سطح دسترسی اعضای protected
جایی بین private
(خصوصی) و public
(عمومی) قرار دارد. کاربرد اصلی برچسب protected
را می توان هنگام استفاده از وراثت ، که فرایند ایجاد کلاس هایی از کلاس های دیگر است ، یافت.پکیج برای مرتب کردن کد استفاده می شود و یک پکیج می تواند شامل چندین کلاس باشد.
به اعضای protected
یک کلاس می توان در داخل پکیج همان کلاس دسترسی داشت. ولی خارج از پکیج آن کلاس اعضای protected
آن کلاس فقط از طریق کلاس های ارث برنده از آن کلاس قابل دسترسی هستند.package justice;
public class Cop {
private int gun;
public int getGun(){
return gun;
}
protected void fire(){
System.out.println("shoot!")
}
}
package crime;
import justice.*;
class Thief{
public static void main(String args[]){
Cop obj = new Cop();
obj.fire(); //Compile Time Error
}
}
کلاس Thief
یک خطای زمان کامپایل ایجاد می کند زیرا در تلاش است به متد محافظت شده ()fire
از کلاس Cop
دسترسی پیدا کند که در پکیج دیگری تعریف شده است.همانطور که گفته شد یکی از کاربرد های سطح دسترسی protected
مربوط به ارث بری کلاس ها است. ما بعداً مبحث ارث بری را پوشش خواهیم داد ، بنابراین در حال حاضر از ورود به جزئیات ارث بری خودداری خواهیم کرد.سطح دسترسی پیش فرض
اگر سطح دسترسی را مشخص نکنیم ، سطح دسترسی پیش فرض را استفاده کرده ایم. سطح دسترسی پیش فرض مشابهprotected
است. سطح دسترسی پیش فرض فقط به اعضای داخل همان پکیج امکان دسترسی می دهد. ولی سطح دسترسی protected
علاوه بر همان پکیج به کلاس های ارث بر از سایر پکیج ها هم امکان دسترسی می دهد. بنابراین ، می توان گفت که دسترسی پیش فرض محدودتر از دسترسی protected
است.ما اشاره مختصری به نحوه ایجاد اعضای داده در یک کلاس کردیم. در جلسه بعدی ، به جزئیات بیشتر در مورد این موضوع خواهیم پرداخت.