සුභ
දවසක් යාලුවනේ
….
අද මම
කතා කරන්න යන්නේ යාලුවනේ
inheritance වල තියෙන ඊලග
case එක ගැන හරි
මම ඉක්මනට කියාගෙන යන්නන් ඔක්කොටම
කලින් බලන්නකෝ පහත code එක මේක දැක්කම ඔයාලට ප්රශ්න
ගොඩක් එයි මේ ගැන
කලින් දන්නෙ නැතිනම් ..හැබැයි
මේක 100% නිවැරැදි
code එකක් compile වෙනවා.
හරි දැන්
මට තියෙන්නේ මේවා එකින් එක
පැහැදිලි කරන්න.
ඔතන තියෙන
B
b1=null;
b1.a=100;
b1.printA();
කියන එකනේ
ප්රශ්නයට තියෙන්නේ
- b1 ට object එකක් assign කරලා නෑ නේ එතකොට compile වෙනවද
- කොහොමද class A ගෙන් object එකකහදන් නැතුවම ඒකේ තියෙන දේවල් access කරේ
- ඒකත් inherit වෙලා තියෙන class B ගේ ඉදන් නෙවෙයි නේ වෙන demo කියන class එකක නේ
ඔයවගේ
ප්රශ්න ඔයලට එන්න ඕන ..හරි
මේ බලන්නකෝ
1.compiler time එකේදි
compiler බලන්නේ class
B ගේ byte code එක
හදන්න විතරයි ඊට අදාල byte
code එක තමා මුලින්ම
හදන්නේ එතනදි
object හදීමක්
වෙන්නෙ නෑ ..object
හදන්නේ
run time එකේදි
jvm එක
විසින් දැන්
ඒකත් හරිනේ
2.දෙවෙනි
කාරනව නම් ඔයාල දන්නවා B
class එකට class A ව
inherit කරපු නිසා තමයි
3.තුන්
වෙනි කාරනව තමයි B b1; කියන
කොට class B ගේ byte code
එක හැදෙනවනේ
මෙහිදී
compiler බලනවා B කියන
class එකට අදාල byte
code එකේදි කොහෙදි හරි
a කියලා attribute එකක්
හා printA(); කියලා method
එකක් තියෙනවද කියලා
B
ට
A ව
extend
(inherit) කිරීම
නිසා ඒවා
class B හි
දැනටමත් ඇතුලත්ව ඇත එම නිසා
compile error
නොදේ.
වැදගත්
:- මෙහිදී
extend
කිරීමෙදි
physically
byte code add නොවේ
. add වන්නේ
logically
පමනකි
මේක මෙහෙම run
කරන්න බෑනේ යලුවනේ
මොකද null pointer exception එකක්
දෙන නිසා ..
අපි ඉතින්
b1 reference එකට object එකක්
assign කරල run කරලම
බලමු .
output එක
මෙහෙමයි .
හරි නේද
යාලුවනේ ඉතින් ඔහොම තමයි අද
පාඩම් නිමා වෙන්නෙ මම හිතනව
ඔයාලට ගන්න දෙයක්
තිබුනා කියලා
ඉතින්
යාලුවේ මම campus එකේ
වැඩත් අස්සේ මේ blog එක
කරන්නේ ලොකු මහන්සියක් දරලා ….ඔයලට
පුලුවන්න් නම් මේක කියවලා
නිකන් යන්නේ නැතිව comment එකක්
දල ඔයාලගෙ
අදහස් කියල යන්න අමතක කරන්න
එපා … ඒක මට මේක තව හොදට කරන්
යන්න ලොකු හයියක්
වෙනවා ….මොකද ඔයලා
කවුරු හරි මේකෙන් දෙයක් ඉගෙන
ගන්නවා කියලා දැනෙන කොට ….. මේකෙ තියෙන
වරදි
ජය වේවා
…!




0 comments:
Post a Comment