********
Abstract method වලට body එකක් නෑ. Abstract class වලට concrete method තියෙන්න පුුලුවන් ඒවුනාට. Abstract class තියෙන්නෙ පොදු ලක්ශන තයෙන්න ඕන class වලට. Abstract class වලින් objects හදන්න බෑ. ඒව තියෙන්නෙ boilerplate code අඩු කරන්න.
********
හදන්න පුළුවන්නෙ බං.. හිතපං මෙහෙම ක්ලාසස් දෙකක් තියෙනව..
class Circle
{
}
abstract class Rectangle
{
}
අපිට වෙන තැනට Circle කියන ක්ලාස් එක පාවිච්චි කල්ල Circle cir = new Circle(); කියල එකක් හැදුවහැකි...
ඒ වගේම Rectangle කියන ඇබ්ස්ට්රෑක්ට් ක්ලාස් එක පාවිච්චි කල්ල Rectangle rec = new Rectangle(){}; කියල එකක් හැදුවහැකි..
එතනදි "{}" දෙක අනිවාර්යයෙන් දාන්න ඕනෙ.. ඒත් ඇබ්ස්ට්රෑක්ට් නොවන Circle ක්ලාස් එකේ එහෙම ඕනෙ නෑ..
ඔය ඇබ්ස්ට්රෑක්ට් ක්ලාස් එක ඇතුලෙ abstract public void method1(); කියල එකක් තියෙනව කියල හිතමු...
එතකොට වෙනත් තැනක Rectangle එකක් ඩික්ලෙයා කරද්දි
Rectangle rc = new Rectangle() {
@Override
public void method1() {}
};
විදිහට එන්න ඕනෙ..
ඉතිං මොකක්ද බං මේකෙ තේරුම ? මෙතඩ් එකක් ඇතුලෙ කිසිම දෙයක් ලියන්නත් බැරි නම්, වෙනත් ක්ලාස් එකක පාවිච්චියෙදි ආයෙමත් ඒක ඕවර්රයිඩ් කරන්නත් ඕනෙ නම් කෝඩ් අඩුවෙන්නෙ කොහොමද

උඹට පුළුවන්නම් abstract අවශ්ය වෙන අවස්ථාවන් දෙක තුනක් කෝඩ් සහිතව දීපංකො.. මේක හෙන විකාරයක් වෙලා බං තියෙන්නෙ..