Monday, January 9, 2017

JAVA Inheritance පාඩම් අංක 2

සුභ දවසක් යාලුවනේ .

අද මම කතා කරන්න යන්නේ යාලුවනේ inheritance වල තියෙන ඊලග case එක ගැන හරි මම ඉක්මනට කියාගෙන යන්නන් ඔක්කොටම කලින් බලන්නකෝ පහත code එක මේක දැක්කම ඔයාලට ප්‍රශ්න ගොඩක් එයි මේ ගැන කලින් දන්නෙ නැතිනම් ..හැබැයි මේක 100% නිවැරැදි code එකක් compile වෙනවා.




හරි දැන් මට තියෙන්නේ මේවා එකින් එක පැහැදිලි කරන්න.

ඔතන තියෙන

B b1=null;
b1.a=100;
b1.printA();

කියන එකනේ ප්‍රශ්නයට තියෙන්නේ

  1. b1 object එකක් assign කරලා නෑ නේ එතකොට compile වෙනවද
  2. කොහොමද class A ගෙන් object එකකහදන් නැතුවම ඒකේ තියෙන දේවල් access කරේ
  3. ඒකත් 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 එකක් දල  ඔයාලගෙ අදහස් කියල යන්න අමතක කරන්න එපා … ඒක මට මේක තව හොදට කරන් යන්න  ලොකු හයියක් වෙනවා ….මොකද ඔයලා කවුරු හරි මේකෙන් දෙයක් ඉගෙන ගන්නවා කියලා දැනෙන කොට …..  මේකෙ තියෙන වරදි  
ඇත්නම් පෙන්නන්න යලුවනේ …... ඉතින් අපි ඊලග post එකෙන් හමුවෙමු ..


ජය වේවා …!

0 comments:

Post a Comment