অবজেক্ট ক্লাসের সমস্ত পদ্ধতি, এছাড়াও toString() পদ্ধতিতে আরও অনেক কিছু - 1

"হাই, অ্যামিগো!"

"ওহে!"

"আজ আমরা অবজেক্ট ক্লাস অধ্যয়ন করতে যাচ্ছি।
আপনি ইতিমধ্যেই এটির সম্মুখীন হয়েছেন, এবং আপনি জানেন যে অবজেক্ট হল সমস্ত ক্লাসের জন্য বেস ক্লাস। এটিতে কার্যত কোন ডেটা নেই, তবে এটির বিভিন্ন পদ্ধতি রয়েছে।"

"কেন এটি পদ্ধতির প্রয়োজন? কেউ কি সত্যিই অবজেক্ট ক্লাসের উদাহরণ তৈরি করে?"

"এইভাবে দেখুন: অবজেক্ট ক্লাসের পদ্ধতিগুলি সমস্ত ক্লাসে সাধারণ। অন্য কথায়, জাভা-এর নির্মাতারা বেশ কয়েকটি পদ্ধতি চিহ্নিত করেছেন যেগুলি তাদের মতে, প্রতিটি ক্লাসে থাকা উচিত এবং সেগুলিকে অবজেক্ট ক্লাসে যুক্ত করা উচিত।"

"এবং যখন পলিমরফিজমের সাথে মিলিত হয় (উত্পন্ন ক্লাসে অবজেক্ট ক্লাসের পদ্ধতিগুলিকে ওভাররাইড করার ক্ষমতা), এটি একটি খুব শক্তিশালী হাতিয়ার হয়ে ওঠে।"

"আসুন দেখে নেওয়া যাক এই পদ্ধতিগুলি কি:"

পদ্ধতি বর্ণনা
public String toString()
বস্তুর একটি স্ট্রিং উপস্থাপনা প্রদান করে।
public native int hashCode()
public boolean equals(Object obj)
বস্তুর তুলনা করতে ব্যবহৃত পদ্ধতির একটি জোড়া।
public final native Class getClass()
একটি বিশেষ বস্তু প্রদান করে যা বর্তমান শ্রেণীর বর্ণনা করে।
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout)
public final void wait(long timeout, intnanos)
public final void wait()
বিভিন্ন থ্রেড থেকে একটি বস্তুর অ্যাক্সেস নিয়ন্ত্রণ করার পদ্ধতি। থ্রেড সিঙ্ক্রোনাইজেশনের জন্য।
protected void finalize()
এই পদ্ধতিটি আপনাকে নেটিভ নন-জাভা রিসোর্স প্রকাশ করতে দেয়: ফাইল, স্ট্রীম ইত্যাদি বন্ধ করুন।
protected native Object clone()
এই পদ্ধতিটি আপনাকে একটি বস্তুর ক্লোন করতে দেয়: বস্তুর একটি সদৃশ তৈরি করে।

"এই পদ্ধতিগুলিকে 6 টি দলে ভাগ করা যেতে পারে। আপনি ইতিমধ্যেই তাদের কয়েকটির সাথে পরিচিত, এবং আমরা পরবর্তী পাঠে বাকিগুলির সাথে পরিচিত হব।"

"কিছু কারণে, আমি এখানে দরকারী কিছু দেখছি না।"

"অ্যামিগো! এই পদ্ধতিগুলি গুরুত্বপূর্ণ না হলে, তারা প্রতিটি বস্তুতে এগুলি যুক্ত করত না! তাই, আমি আপনাকে এইগুলি কী এবং কেন এগুলি প্রয়োজন তা আরও ঘনিষ্ঠভাবে দেখার পরামর্শ দেব৷ যদি সেগুলি আপনার কাছে গুরুত্বহীন বলে মনে হয় , তাহলে হয় আপনি কিছু বুঝতে পারেননি বা কিছু সঠিকভাবে বুঝতে পারেননি।"

"ঠিক আছে। আমি মনোযোগ দিয়ে শুনব।"

"চলুন toString() পদ্ধতি দিয়ে শুরু করা যাক।

"এই পদ্ধতিটি আপনাকে যেকোনো বস্তুর একটি পাঠ্য বিবরণ পেতে দেয়। অবজেক্ট ক্লাসে এর বাস্তবায়ন খুবই সহজ:"

return getClass().getName() + "@" + Integer.toHexString(hashCode());

"getClass() এবং hashCode()ও অবজেক্ট ক্লাসের পদ্ধতি।
এই পদ্ধতিটিকে কল করলে সাধারণত এর মত ফলাফল পাওয়া যায়:"

java.lang.Object@12F456

"এবং এই ধরনের একটি বর্ণনা কি ভাল?"

"এই বিবরণ আপনাকে অবজেক্টের ক্লাস জানতে দেয় যে পদ্ধতিতে কল করা হয়েছিল। আপনি অবজেক্টের মধ্যে পার্থক্যও করতে পারেন; @ চিহ্নের পরে বিভিন্ন অবজেক্টের বিভিন্ন সংখ্যা থাকবে।"

"কিন্তু এই পদ্ধতির আসল মান অন্য জায়গায় রয়েছে। এই পদ্ধতিটি যেকোন ক্লাসে ওভাররাইট করা যেতে পারে আরও বিস্তারিত বা উপযুক্ত বস্তুর বিবরণ দিতে।"

"কিন্তু আরও কিছু আছে। যেহেতু আপনি প্রতিটি বস্তুর একটি পাঠ্য উপস্থাপনা পেতে পারেন, জাভা আপনার জন্য বস্তুতে স্ট্রিং যোগ করার জন্য সমর্থন বাস্তবায়ন করা সম্ভব করেছে।
এটি পরীক্ষা করে দেখুন:"

কোড আসলেই কি হয়
int age = 18;
System.out.println("Age is " + age);
String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vincent");
System.out.println("Student is " + st);
Student st = new Student("Vincent");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);
Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

"হ্যাঁ, আমি এটি নিয়মিত ব্যবহার করি। বিশেষ করে যখন আমি একটি প্রোগ্রাম লিখছি বা বাগ খুঁজছি। এটি একটি দরকারী অপারেশন।"