Access modifier | this(class) | subclass | package | general |
---|---|---|---|---|
public |
●
|
●
|
●
|
●
|
protected |
●
|
●
|
X
|
X
|
default |
●
|
X
|
●
|
X
|
private |
●
|
X
|
X
|
X
|
දැන් අපි මේ පිලිබඳව විස්තරාත්මකව බලමු.
■ public
මෙලෙස declare කරන ලද members සඳහා ජාවා වැඩසටහන තුල එය අයත් object එක refer කරන ඕනෑම තැනකදී ලඟා විය හැක.
■ protected
මේ අයුරින් declare කරන ලද methods හා variables භාවිතා කල හැක්කේ එම class එකෙහි sub class / child class වලට පමණි. මෙය Inheritance පාඩමේදී වඩාත් පැහැදිලි වනු ඇත.
■ default
යම් member කෙනෙක් සඳහා කිසිඳු modifier එකක් යොදා නොමැති විට එයට යෙදෙනුයේ default modifier එකයි.default members භාවිතා කල හැක්කේ එම class එක තුලදී සහ එම class එක අයත් package එක තුලදී පමණි.
■ private
සියලු private members access කල හැක්කේ එය අයත් class එක තුලදීම පමණි.
සැයු: සාමාන්යයෙන් Object Oriented ක්රමලේඛනයක් ලිවීමේදී අනුගමනය කරන දෙයක් තමයි data නොහොත් instance variables, private ලෙස declare කිරීම සහ methods , public ලෙස declare කිරීම.public data භාවිතා කිරීම හොඳ වස්තු පාදක ක්රමලේඛනයක ලක්ෂණයක් නොවේ!.
දැන් අපි private සහ public modifiers ගැන අධ්යයනය කිරීම සඳහා සරල ජාවා වැඩසටහනක් ලියමු.
මේ සඳහා අපි Employee කෙනෙකු උදාහරණයට ගනිමු.
Employee.java
class Employee { //instance variables public String Name; // Name is a public member private float HourlyRate; //private member private float HoursWorked; //private member //constructor public Employee(String name,float hr,float hw){ Name=name; HourlyRate=hr; HoursWorked=hw; } //public method public void setHourlyRate(float hr){ HourlyRate=hr; } //private method private float getTotalSal(){ return (HourlyRate*HoursWorked); } //public method public void showDetails(){ System.out.println("Employee Name : " + Name); System.out.println("Total Salary : " + getTotalSal() ); System.out.println("-----------------------------------------"); } }//end of the Employee class■දැන් අපි Employee class එක යොදාගෙන පහත කේතය execute කර ලැබෙන ප්රතිඵලය කුමක්දැයි බලමු.
Employee emp1=new Employee("Prasanna",2300.75f,40.0f); emp1.showDetails(); emp1.Name="Nimal"; //access the public variable of emp1 emp1.showDetails();1 සහ 2 පේලි
මෙහිදී Employee object එකක් සාදා මුලින්ම එහි public member කෙනෙකු වන showDetails() method එක invoke කරයි.
3 පේලිය
මෙහිදී ඉහත සාදාගත් emp1 object එකට අයත් public member වන Name විචල්යය access කර එහි name එක Nimal ලෙසට වෙනස් කරනු ලැබේ.
4 පේලිය
මෙහිදී නැවතත් emp1 object එකෙහි showDetails() method එක invoke කරයි. දැන් console එකෙහි දිස්විය යුත්තේ Name එක Nimal ලෙසටය.
Output:
■මීලඟට private modifier එක අධ්යයනය කිරීමට පහත කේතය execute කරමු.
Employee emp1=new Employee("Prasanna",2300.75f,40.0f); emp1.HourlyRate=1500.00f;මෙහිදී emp1 ගේ private modifier එකක් වන HourlyRate විචල්යය අපි access කිරීමට යයි. එම නිසා මෙහිදී compile කිරීමේදී පහත දෝශ පණිවුඩය පෙන්වයි.
අපට නිවැරදිව HourlyRate එක වෙනස් කිරීමට කලයුතු වන්නේ අප Employee class එකෙහි අන්තර්ගත කොට ඇති setHourlyRate() නම් public method එක භාවිතා කිරීමයි. මේ සඳහා කේතය පහත පරිදි වේ.
Employee emp1=new Employee("Prasanna",2300.75f,40.0f); emp1.showDetails(); // before changing the HourlyRate emp1.setHourlyRate(1500.00f); emp1.showDetails(); // after changing the HourlyRateOutput:
මේ ආකාරයෙන්ම Employee class එකට අයත් getTotalSal() නම් private method එක class එක තුලදීම භාවිතා කර තිබෙන ආකාරය line 25 දෙස බලන විට ඔබට පෙනී යනු ඇත.
අනෙක් access modifiers පිලිබඳව අපි ඉදිරියේදී සාකච්ඡා කරන OO Concept වලදී පුලුල්ව අධ්යයනය කිරීමට පුලුවන්.
මම මේ සඳහා යොදාගත් උදාහරණ භාගත කර ගැනීමට පහත සබැඳිය භාවිතා කරන්න.
Download The Source Code
elazzzzzzzzzzzzz....carry on>>>>>
ReplyDelete^◕‿◕^
ReplyDelete......
This comment has been removed by the author.
ReplyDeleteIs it correct ?
ReplyDeleteor else it should be ,
protected ● ● X X
In Access modifier diagram ?
:)
Diagram Above this section
ReplyDeleteprotected
මේ අයුරින් declare කරන ලද methods හා variables භාවිතා කල හැක්කේ එම class එකෙහි sub class / child class වලට පමණි. මෙය Inheritance පාඩමේදී වඩාත් පැහැදිලි වනු ඇත.
Thanks Nipuna ,
ReplyDeleteI'll correct it. :)