Java-তে abstraction অর্জন করা হয় Abstract class এবং Interface ব্যবহার করে। Abstract class-এ abstract method থাকে যা চাইল্ড ক্লাসে ইমপ্লিমেন্ট করতে হয়। Abstract class এবং Concrete class-এর মধ্যে গুরুত্বপূর্ণ পার্থক্য নিচে দেওয়া হলো:
| ক্র. নং | কী | Abstract Class | Concrete Class |
|---|---|---|---|
| ১ | সাপোর্টেড মেথড (Supported Methods) | Abstract class-এ অ্যাবস্ট্রাক্ট এবং কনক্রিট (concrete) দুটি মেথডই থাকতে পারে। | Concrete class-এ শুধু কনক্রিট মেথড থাকতে পারে। একটি মাত্র অ্যাবস্ট্রাক্ট মেথড থাকলেই ক্লাসটি abstract হয়ে যায়। |
| ২ | ইনস্ট্যানশিয়েশন (Instantiation) | Abstract class new কীওয়ার্ড দিয়ে ইনস্ট্যানশিয়েট করা যায় না। |
Concrete class new কীওয়ার্ড দিয়ে ইনস্ট্যানশিয়েট করা যায়। |
| ৩ | অ্যাবস্ট্রাক্ট মেথড (Abstract Method) | Abstract class-এ অ্যাবস্ট্রাক্ট মেথড থাকতে পারে বা নাও থাকতে পারে। | Concrete class-এ অ্যাবস্ট্রাক্ট মেথড থাকতে পারে না। |
| ৪ | Final (Final Keyword) | Abstract class final ডিক্লেয়ার করা যায় না। |
Concrete class final ডিক্লেয়ার করা যায়। |
| ৫ | কীওয়ার্ড (Keyword) | Abstract class ডিক্লেয়ার করতে abstract কীওয়ার্ড ব্যবহার করতে হয়। |
Concrete class ডিক্লেয়ার করতে abstract কীওয়ার্ড ব্যবহার করা হয় না। |
| ৬ | ইনহেরিটেন্স (Inheritance) | Abstract class extends কীওয়ার্ড দিয়ে অন্য ক্লাস ইনহেরিট করতে পারে এবং ইন্টারফেস ইমপ্লিমেন্ট করতে পারে। |
Interface শুধু ইন্টারফেস ইনহেরিট করতে পারে। (নোট: টেবিলের এই সেলটি মুল কন্টেন্টে ভুলে গিয়ে Interface লেখা থাকায় সংশোধন করা হয়েছে।) |
| ৭ | ইন্টারফেস (Interface) | Abstract class এককেই ইন্টারফেস ইমপ্লিমেন্ট করে ইনস্ট্যানশিয়েশন করতে পারে না। চাইল্ড ক্লাস প্রয়োজন। | Interface সহজে ইমপ্লিমেন্ট করা যায়। |
Abstract Class vs Concrete Class উদাহরণ
JavaTester.java
public class JavaTester {
public static void main(String args[]) {
Cat lion = new Lion();
lion.eat();
}
}
abstract class Cat {
abstract public void eat();
}
class Lion extends Cat {
public void eat(){
System.out.println("Lion eats");
}
}
আউটপুট
Lion eats