প্রথমত, নোট করুন যে আমি একটি সি ++ এবং পাইথন, জাভা নই, সুতরাং এর কয়েকটি পুরোপুরি পুরোপুরি প্রয়োগ নাও হতে পারে। জাভাতে ক্লাসগুলি কীভাবে কাজ করে সে সম্পর্কে যদি আমি কিছু ভুল অনুমান করি তবে দয়া করে আমাকে সংশোধন করুন।
ক্লাসগুলি যখন তাত্ক্ষণিকভাবে হয় তখন প্রাথমিকভাবে দরকারী। যে শ্রেণীর কোনও দৃষ্টান্ত প্রকৃতপক্ষে তৈরি হয় না তা হ'ল সত্যই কেবল একটি গৌরবময় নামস্থান। আপনি যদি এইভাবে আপনার সমস্ত ক্লাস ব্যবহার করেন তবে প্রকৃতপক্ষে, নাম স্থান থেকে নেমস্পেসে জিনিসগুলি স্থানান্তরিত করার সুবিধাগুলি তুচ্ছ মনে হতে পারে - সর্বাধিক, আপনি প্রতিটিটিতে কিছু ব্যক্তিগত তথ্য রেখে জিতে যাবেন এবং এর মাধ্যমে জিনিসগুলিকে সামান্য পরিমাণে আবদ্ধ করে তোলেন।
যাইহোক, ক্লাসগুলি যেদিকে জ্বলজ্বল করে এটি এটি নয়। String
ক্লাসটি বিবেচনা করুন : char
অ্যারে এবং কিছু স্ট্যাটিক ফাংশন ব্যবহার করে আপনার কাছে একই বৈশিষ্ট্য থাকতে পারে। এই মুহুর্তে, ফাংশনগুলি আপনাকে কিছুটা অতিরিক্ত সুরক্ষা এবং সিনট্যাকটিক চিনি দেয়। আপনি লিখতে পারেন string.length()
পরিবর্তে length(char_array)
; এটি খুব বড় বিষয় নয়, তবে অনেক লোক এখনও এটি পছন্দ করে। তদুপরি, আপনি জানেন যে যদি কেউ আপনাকে একটি দেয় তবে String
এটি String
নির্মাণকারীর সাহায্যে তৈরি করা হয়েছিল এবং এটি অবশ্যই length
ফাংশনটির সাথে কাজ করবে - যদি অ্যারে সংস্করণটি কিছু অক্ষর পরিচালনা করতে না পারে তবে এটি আপনাকে সেখানে thereোকানো থেকে বিরত করার কোনও উপায় নেই ।
যদিও এটি এখনও তা নয়। মূল বিষয়টি হ'ল ক্লাসগুলি ডেটা এবং ফাংশনগুলি বান্ডিল করে যা এটি পরিচালনা করে এবং এটি উভয়কে অ্যাবস্ট্রাক্ট করে। যখন আপনার একটি পদ্ধতি থাকে void f(Builder b)
আপনি জানেন যে আপনি একটি পাচ্ছেন Builder
, এবং আপনি আশা করতে পারেন যে এটি নির্দিষ্ট আচরণকে সমর্থন করবে। যাইহোক, আপনি ডেটা বা ফাংশনগুলি কার্যকর করার কিছুই জানেন না - বাস্তবে, আপনি লেখার এবং সংকলন করার কারণে উভয়ের জন্য সংজ্ঞা এখনও লেখা যায় নি f
।
বুঝতে প্রথম পয়েন্টটি এইভাবে ক্লাসগুলি ডেটাটি নষ্ট না করে তা নিশ্চিত করার সময় এটি প্রায় সহজেই পাস করার সুবিধাজনক করে তোলে। দ্বিতীয় বিষয়টি হ'ল উভয়ই কোন ডেটা এবং কোন ফাংশন (বাস্তবায়ন) অবজেক্ট সম্পর্কে কিছু তা না, আপনি কেবল তার ধরণ থেকে বলতে পারেন।