Static Variables , class එකකින් හදන සෑම instance එකකටම පොදුයි.එහෙමත් නැත්නම් එකම class එකකින් හදන objects සියල්ල share කරන්නෙ static variables වල එකම copy එකක්.
උදාහරණයක් විදිහට අපි මේ program එක අරගෙන බලමු.
-----------------------------------------------------------------------------------------------------------------
class MyClass{
int x;
static int y;
}
class MyExample{
public static void main(String args[]){
MyClass c1=new MyClass();
c1.x=10;
c1.y=20;
MyClass c2=new MyClass();
c2.x=100;
c2.y=200;
MyClass c3=new MyClass();
c3.x=1000;
c3.y=2000;
System.out.println("c1 : "+c1.x+" "+c1.y); // Line 1
System.out.println("c2 : "+c2.x+" "+c2.y); // Line 2
System.out.println("c3 : "+c3.x+" "+c3.y); // Line 3
}
}
Figure 1 |
මෙහි x කියන්නෙ non-static variable එකක්. y කියන්නෙ static variable එකක්. එම නිසා variable y ,
MyClass නම් class සාදන සෑම instance එකකටම common property එකක්.
x object එකක් තුල සෑදෙන අතර y සෑදෙන්නේ template එක තුලය.
උදාහරණයක් ලෙස c1.x ලෙස call කල විට වෙනස් වෙන්නෙ MyClass class එකෙන් හැදුනු c1 object instance එකෙහි x variable එක.
ඒ අනුව c1 object එකෙහි x හි default value එක වෙලා තිබුණු 0 ට දැන් 10 assign වෙනවා.
ඒ විදිහටම c2 object එකේ x ට 100 ත් c3 object එකේ x ට 1000 ත් assign වෙනවා.
නමුත් y කියන්නේ ස්තතික් variable එකක් නිසා ,
c1.y=20 මගින් y හි අගය 20 ලෙසටත් ,
c2.y=200 මගින් ය හි අගය 200 ලෙසටත්
c3.y =2000 මගින් ය හි අගය 2000 ලෙසටත් වෙනස් වෙනවා.
c1 , c2 , c3 instance object තුනෙන්ම access කරන්නේ MyClass template එකෙහි සෑදුනු y variable එකයි. දැන් අවසාන වශයෙන් y හි අගය 2000 යි;
මෙම ක්රියාවලිය සිදුවන ආකාරය figure1 මගින් පෙන්නුම් කරලා තියෙනවා.
එතකොට අපි උඩදී උදාහරණයක් විදිහට ගත්තු program එකේ output එක විදිහට අපිට ලැබෙන්නේ,
Line1 print කරනවා >>> c1 : 10 2000
Line2 print කරනවා >>> c2 : 100 2000
Line3 print කරනවා >>> c3 : 1000 2000
No comments:
Post a Comment