Abstract Class
যে ক্লাসে এক বা একাধিক abstract মেথড থাকে, সেটিকে abstract ঘোষিত করতে হয়। এবস্ট্রাক্ট ক্লাস ইনস্ট্যানশিয়েট করা যায় না। এটিকে ব্যবহার করতে হলে সাবক্লাসে এক্সটেন্ড করে Абস্ট্রাক্ট মেথডগুলো ইমপ্লিমেন্ট করতে হয়।
উদাহরণ
abstract class MyClass {
public void display() { // কনক্রিট মেথড
System.out.println("This is a method of abstract class");
}
}
public class AbstractClassExample extends MyClass {
public static void main(String args[]) {
new AbstractClassExample().display();
}
}
আউটপুট
This is a method of abstract class
Final Class
final ক্লাসকে এক্সটেন্ড করা যায় না। এরর: cannot inherit from final SuperClass।
উদাহরণ
final class SuperClass {
public void display() {
System.out.println("This is a method of the superclass");
}
}
// public class SubClass extends SuperClass { } // কম্পাইল এরর
Abstract এবং Final একসাথে (বিরোধাভাস)
abstractক্লাস → অবশ্যই এক্সটেন্ড করতে হবে ব্যবহার করার জন্য।finalক্লাস → কখনো এক্সটেন্ড করা যাবে না।
এই দুটি নিয়ম পরস্পর বিরোধী। তাই জাভা কম্পাইলার একসাথে abstract এবং final মডিফায়ার দেওয়ার অনুমতি দেয় না।
উদাহরণ: ইলিগাল কম্বিনেশন (এরর)
public final abstract class Example { // কম্পাইল এরর
public void sample() { }
}
কম্পাইল টাইম এরর
Example.java:1: error: illegal combination of modifiers: abstract and final
public final abstract class Example {
^
1 error
স্মরণীয়: মেথড লেভেলেও abstract এবং final একসাথে ব্যবহার করা যায় না (অবস্ট্রাক্ট মেথড বাধ্যতামূলক ওভাররাইড করতে হয়, ফাইনাল মেথড ওভাররাইড করা যায় না)।