একটি সিঙ্গেল জাভা প্রোগ্রামে দুটি বা অধিক ক্লাস থাকতে পারে, জাভাতে এটি দুটি উপায়ে সম্ভব।
একটি জাভা প্রোগ্রামে একাধিক ক্লাস ইমপ্লিমেন্ট করার দুটি উপায়
- নেস্টেড ক্লাস (Nested Classes)
- একাধিক নন-নেস্টেড ক্লাস (Multiple non-nested classes)
কম্পাইলার একাধিক নন-নেস্টেড ক্লাসের সাথে কীভাবে বিহেভ করে
নিচের উদাহরণে, জাভা প্রোগ্রামে দুটি ক্লাস আছে, একটির নাম Computer এবং অন্যটির Laptop। দুটি ক্লাসের নিজস্ব কন্সট্রাক্টর এবং একটি মেথড আছে। মেইন মেথডে, আমরা দুটি ক্লাসের অবজেক্ট তৈরি করে তাদের মেথড কল করতে পারি।
উদাহরণ
public class Computer {
Computer() {
System.out.println("Constructor of Computer class.");
}
void computer_method() {
System.out.println("Power gone! Shut down your PC soon...");
}
public static void main(String[] args) {
Computer c = new Computer();
Laptop l = new Laptop();
c.computer_method();
l.laptop_method();
}
}
class Laptop {
Laptop() {
System.out.println("Constructor of Laptop class.");
}
void laptop_method() {
System.out.println("99% Battery available.");
}
}
যখন আমরা উপরের প্রোগ্রাম কম্পাইল করি, দুটি .class ফাইল তৈরি হবে: Computer.class এবং Laptop.class। এর সুবিধা হলো আমরা .class ফাইলটি অন্য প্রজেক্টে রি-ইউজ করতে পারি বিনা কোড রি-কম্পাইল করেই। সংক্ষেপে, তৈরি হওয়া .class ফাইলের সংখ্যা কোডে থাকা ক্লাসের সংখ্যার সমান হবে। আমরা যত ইচ্ছে তত ক্লাস তৈরি করতে পারি কিন্তু একই ফাইলে অনেক ক্লাস লেখা রিকমেন্ডেড নয় কারণ এটি কোড পড়াকে কঠিন করে, বরং প্রতিটি ক্লাসের জন্য আলাদা ফাইল তৈরি করা ভালো।
আউটপুট
Constructor of Computer class. Constructor of Laptop class. Power gone! Shut down your PC soon... 99% Battery available.
নেস্টেড ক্লাসের সাথে কম্পাইলার কীভাবে বিহেভ করে
একবার মেইন ক্লাস কম্পাইল হলে যেটিতে অনেক ইনার ক্লাস আছে, কম্পাইলার প্রতিটি ইনার ক্লাসের জন্য আলাদা .class ফাইল জেনারেট করে।
উদাহরণ
// Main class
public class Main {
class Test1 { // Inner class Test1
}
class Test2 { // Inner class Test2
}
public static void main(String [] args) {
new Object() { // Anonymous inner class 1
};
new Object() { // Anonymous inner class 2
};
System.out.println("Welcome to Tutorials Point");
}
}
উপরোক্ত প্রোগ্রামে, আমাদের একটি Main ক্লাস আছে যেটিতে চারটি ইনার ক্লাস Test1, Test2, Anonymous inner class 1 এবং Anonymous inner class 2। একবার এই ক্লাস কম্পাইল করলে নিচের ক্লাস ফাইলগুলো জেনারেট হবে।
Main.class
Main$Test1.class
Main$Test2.class
Main$1.class
Main$2.class
আউটপুট
Welcome to Tutorials Point