কন্সট্রাক্টর সম্পর্কে ধারনা
কন্সট্রাক্টরঃ
কন্সট্রাক্টর মূলত একটি ফাংশন বা মেথড। মেথডের যেমন রিটার্ন টাইপ থাকে এক্ষেত্রে কন্সট্রাক্টরের কোন রিটার্ন টাইপ থাকে না । এমনকি void ও না। কোন ক্লাসের মেম্বার বা ফিল্ড ভেরিয়েবল গুলোর মান বসানোর জন্য কন্সট্রাক্টর মেথডটি ব্যবহার করা হয়। আমরা যখন কোন ক্লাসের অব্জেক্ট তৈরি করি তখন মূলত কন্সট্রাক্টরকেই কল করে থাকি। যেহেতু অন্যান্য ফাংশন বা মেথডের মত কন্সট্রাক্টরও একটি ফাংশন তাহলে অনেকের কাছে মনে হতে পারে কন্সট্রাক্টর ও মেথড একই কিনা। কিন্ত না কন্সট্রাক্টর ও মেথড এক না। অন্যান্য ফাংশন এর সাথে এর পার্থক্য হচ্ছে কন্সট্রাক্টর এর নাম অবশ্যই তার ক্লাসের নামে হবে আর কোন রিটার্ন টাইপ থাকবেনা।
নিচের প্রোগ্রামটি লক্ষ করুন
কন্সট্রাক্টর ওভারলোডিংঃ
মেথড ওভারলোডিং এর মত কন্সট্রাক্টর ওভারলোডিং করা যায়। নিচের প্রোগ্রামটিতে Linkedin নামে একটি ক্লাস আছে। ক্লাসটিতে তিনটি Linkedin নামে কন্সট্রাক্টর রয়েছে।
অনেকের কাছে মনে হতে পারে ক্লাসের নাম আর কন্সট্রাক্টর নাম একই কেন। কারন আমরা জানি,কন্সট্রাক্টরের নাম আর ক্লাসের নাম একই হতে হয়। প্রথমটিতে কোন প্যারামিটার নেই। দ্বিতীয়টিতে একটি ও ৩য়টিতে দুইটি প্যারামিটার রয়েছে। লক্ষ করলে দেখা যাবে যে, this নামে একটি কিওয়ার্ড ব্যবহার করা হয়েছে। এই this কিওয়ার্ড নিয়ে আরেকদিন কথা বলব। এখানে this.name, this.age বলতে আসলে বুঝায় ফিল্ডয়ের নাম গুলোকে। অর্থাৎ this.name বা this.age মানে ফিল্ড ভেরিইয়েবলের মানকে ডিফাইন করে দেয়া সমান চিহ্ন পর যে মানটা দিব সেইটা দিয়ে। অনেকের কাছে বিষয়টা ক্লিয়ার নাও হতে পারে। প্রবলেম নাই প্রোগ্রামিং এর সাথে লেগে থাকেন। আস্তে আস্তে সব জানতে পারবেন।
অনেকের কাছে মনে হতে পারে ক্লাসের নাম আর কন্সট্রাক্টর নাম একই কেন। কারন আমরা জানি,কন্সট্রাক্টরের নাম আর ক্লাসের নাম একই হতে হয়। প্রথমটিতে কোন প্যারামিটার নেই। দ্বিতীয়টিতে একটি ও ৩য়টিতে দুইটি প্যারামিটার রয়েছে। লক্ষ করলে দেখা যাবে যে, this নামে একটি কিওয়ার্ড ব্যবহার করা হয়েছে। এই this কিওয়ার্ড নিয়ে আরেকদিন কথা বলব। এখানে this.name, this.age বলতে আসলে বুঝায় ফিল্ডয়ের নাম গুলোকে। অর্থাৎ this.name বা this.age মানে ফিল্ড ভেরিইয়েবলের মানকে ডিফাইন করে দেয়া সমান চিহ্ন পর যে মানটা দিব সেইটা দিয়ে। অনেকের কাছে বিষয়টা ক্লিয়ার নাও হতে পারে। প্রবলেম নাই প্রোগ্রামিং এর সাথে লেগে থাকেন। আস্তে আস্তে সব জানতে পারবেন।
প্রোগ্রামটির আউটপুট হবে নিচের মত।
My name is: Aziz
My age is: 21
মেইন মেথড এ ক্লাসের নামে object create করা হয়েছে। হয়তোবা কন্সট্রাক্টর সম্পর্কে মোটামুটি একটা ধারনা হবে সবার মাঝে।
হ্যাপি কোডিং
code golake.. code ar block e dio.. tahole sondor lagbe..ar code use korte sobidha hobe..
ReplyDelete