এখানে, আমি আমার ক্লাসের উদাহরণ তৈরি করছি
না, আপনি এখানে আপনার বিমূর্ত শ্রেণির উদাহরণ তৈরি করছেন না। বরং আপনি আপনার বিমূর্ত শ্রেণীর বেনামে সাবক্লাসের উদাহরণ তৈরি করছেন । এবং তারপরে আপনি সাবস্ট্রাক্স অবজেক্টের দিকে নির্দেশ করে আপনার বিমূর্ত শ্রেণির রেফারেন্সে পদ্ধতিটি চালু করছেন ।
এই আচরণটি পরিষ্কারভাবে জেএলএসে তালিকাভুক্ত - বিভাগ # 15.9.1 : -
যদি শ্রেণীর উদাহরণ তৈরির এক্সপ্রেশনটি কোনও শ্রেণীর শৃঙ্গে শেষ হয়, তবে ক্লাসটি ইনস্ট্যান্ট করা হচ্ছে বেনাম শ্রেণি। তারপর:
- যদি টি কোনও শ্রেণিকে চিহ্নিত করে, তবে টি দ্বারা শ্রেণিকৃত একটি বেনামে সরাসরি সাবক্লাস ঘোষণা করা হয়। টি দ্বারা চিহ্নিত শ্রেণিটি যদি একটি চূড়ান্ত শ্রেণি হয় তবে এটি একটি সংকলন-সময় ত্রুটি।
- যদি টি একটি ইন্টারফেসকে চিহ্নিত করে, তবে অবজেক্টের একটি বেনামী সরাসরি সাবক্লাস যা টি দ্বারা চিহ্নিত ইন্টারফেসটি কার্যকর করে।
- উভয় ক্ষেত্রেই, সাবক্লাসের মূল অংশটি শ্রেণীর উদাহরণ তৈরির এক্সপ্রেশনটিতে দেওয়া ক্লাসবডি।
- ক্লাসটি ইনস্ট্যান্ট করা হচ্ছে বেনামে সাবক্লাস।
জোর আমার।
এছাড়াও, জেএলএস - বিভাগ # 12.5 এ , আপনি অবজেক্ট তৈরি প্রক্রিয়া সম্পর্কে পড়তে পারেন । আমি এখান থেকে একটি বিবৃতি উদ্ধৃত করব: -
যখনই কোনও নতুন শ্রেণীর উদাহরণ তৈরি করা হয়, শ্রেণীর ধরণের হিসাবে ঘোষিত সমস্ত দৃষ্টান্তের ভেরিয়েবল এবং শ্রেণীর ধরণের প্রতিটি সুপারক্লাসে ঘোষিত সমস্ত দৃষ্টান্তের ভেরিয়েবলগুলি সহ সমস্ত দৃষ্টান্ত ভেরিয়েবলগুলির জন্য জায়গা সহ মেমরির স্থান বরাদ্দ করা হয়।
ফলস্বরূপ সদ্য নির্মিত বস্তুর একটি রেফারেন্স ফিরে আসার ঠিক আগে, নির্দেশিত কন্সট্রাক্টর নিম্নলিখিত প্রক্রিয়াটি ব্যবহার করে নতুন অবজেক্টটি আরম্ভ করার জন্য প্রক্রিয়া করা হয়:
আমার দেওয়া লিঙ্কটিতে আপনি সম্পূর্ণ প্রক্রিয়া সম্পর্কে পড়তে পারেন।
ব্যবহারিকভাবে দেখতে যে ক্লাসটি ইনস্ট্যান্ট করা হচ্ছে এটি একটি অনামী সাবক্লাস , আপনাকে কেবল আপনার উভয় ক্লাস সংকলন করতে হবে। ধরুন আপনি এই ক্লাসগুলি দুটি পৃথক ফাইলে রেখেছেন:
My.java:
abstract class My {
public void myMethod() {
System.out.print("Abstract");
}
}
Poly.java:
class Poly extends My {
public static void main(String a[]) {
My m = new My() {};
m.myMethod();
}
}
এখন, আপনার উত্স ফাইল দুটি সংকলন করুন:
javac My.java Poly.java
এখন আপনি যে ডিরেক্টরিটিতে উত্স কোডটি সংকলন করেছেন সেখানে আপনি নীচের ক্লাসের ফাইলগুলি দেখতে পাবেন:
My.class
Poly$1.class // Class file corresponding to anonymous subclass
Poly.class
যে ক্লাস দেখুন - Poly$1.class
। এটি নীচের কোডটি ব্যবহার করে তাত্পর্যপূর্ণ বেনামে সাবক্লাসের সাথে সংকলকটির দ্বারা তৈরি ক্লাস ফাইল:
new My() {};
সুতরাং, এটি স্পষ্ট যে এখানে একটি পৃথক শ্রেণি ইনস্ট্যান্ট করা হচ্ছে। এটি ঠিক এটি, ক্লাসটি কেবল একটি সংকলক সংকলনের পরে একটি নাম দেওয়া হয়েছিল।
সাধারণভাবে, আপনার শ্রেণীর সমস্ত বেনাম সাবক্লাসগুলি এই ফ্যাশনে নামকরণ করা হবে:
Poly$1.class, Poly$2.class, Poly$3.class, ... so on
এই সংখ্যাগুলি সেই অর্ডারকে বোঝায় যাতে সেই বেনামী ক্লাসগুলি এনকোলেসিং ক্লাসে প্রদর্শিত হয়।
B
একটি বিমূর্ত এক থেকেA
, নির্মাণ অংশ সময় এরB
দৃষ্টান্ত, যা চলমান গঠিতA
'র কন্সট্রাকটর, বস্তুর রানটাইম টাইপ আসলেA
। শুধুমাত্র অস্থায়ী।