1. অ্যাক্সেস মডিফায়ার
প্রতিটি পদ্ধতির আগে, প্রোগ্রামাররা তথাকথিত অ্যাক্সেস মডিফায়ার নির্দিষ্ট করতে পারে। এর মধ্যে নিম্নলিখিত কীওয়ার্ডগুলি রয়েছে: public
, protected
, private
.
এই অ্যাক্সেস মডিফায়ারগুলি আপনাকে একটি পদ্ধতিতে অন্যান্য ক্লাসের অ্যাক্সেস সীমাবদ্ধ করতে দেয়।
উদাহরণস্বরূপ, আপনি যদি private
একটি মেথড ডিক্লারেশনের আগে কীওয়ার্ড লেখেন, তাহলে মেথডটি শুধুমাত্র সেই ক্লাস থেকে কল করা যাবে যেখানে এটি ঘোষণা করা হয়েছে। কীওয়ার্ডটি public
যে কোনো ক্লাসের যেকোনো পদ্ধতি থেকে চিহ্নিত পদ্ধতিতে অ্যাক্সেসের অনুমতি দেয়।
এই ধরনের মোট 3টি মডিফায়ার রয়েছে, তবে একটি পদ্ধতিতে 4 ধরনের অ্যাক্সেস রয়েছে। এর কারণ হল অ্যাক্সেস মডিফায়ারের অনুপস্থিতির অর্থও কিছু।
থেকে অ্যাক্সেস... | ||||
---|---|---|---|---|
সংশোধক | যে কোন ক্লাস | শিশু শ্রেণী | এর প্যাকেজ | এর ক্লাস |
public |
হ্যাঁ | হ্যাঁ | হ্যাঁ | হ্যাঁ |
protected |
না | হ্যাঁ | হ্যাঁ | হ্যাঁ |
কোন পরিবর্তনকারী নেই | না | না | হ্যাঁ | হ্যাঁ |
private |
না | না | না | হ্যাঁ |
1. public
সংশোধক
সংশোধক দ্বারা চিহ্নিত একটি পদ্ধতি (বা পরিবর্তনশীল বা শ্রেণী) প্রোগ্রামের যেকোনো স্থান থেকেpublic
অ্যাক্সেস করা যেতে পারে । এটি উন্মুক্ততার সর্বোচ্চ ডিগ্রী - কোন বিধিনিষেধ নেই।
2. private
সংশোধক
সংশোধক দ্বারা চিহ্নিত একটি পদ্ধতি (বা পরিবর্তনশীল, বা শ্রেণী) শুধুমাত্র একই ক্লাস থেকেprivate
অ্যাক্সেস করা যেতে পারে যেখানে এটি ঘোষণা করা হয়েছে । অন্য সব শ্রেণীর জন্য, চিহ্নিত পদ্ধতি (বা পরিবর্তনশীল) অদৃশ্য। এটা যেন অস্তিত্ব নেই. এটি সর্বোচ্চ স্তরের সীমাবদ্ধতা - শুধুমাত্র তার নিজস্ব শ্রেণী।
3. কোন সংশোধক নেই (ডিফল্ট সংশোধক)
যদি একটি পদ্ধতি (বা পরিবর্তনশীল) কোনো সংশোধক দ্বারা চিহ্নিত না হয়, তাহলে এটিকে 'ডিফল্ট সংশোধক' হিসেবে বিবেচনা করা হয়। সেই পরিবর্তনকারীর সাথে ভেরিয়েবল বা পদ্ধতিগুলি (অর্থাৎ কোনটিই নয়) প্যাকেজের সমস্ত ক্লাসের কাছে দৃশ্যমান হয় যেখানে তারা ঘোষণা করা হয়েছে । এবং শুধুমাত্র তাদের জন্য। এই সংশোধকটিকে কখনও কখনও বলা হয় package-private
, ইঙ্গিত করে যে ভেরিয়েবল এবং পদ্ধতিতে অ্যাক্সেস সম্পূর্ণ প্যাকেজের জন্য উন্মুক্ত যেখানে তাদের ক্লাস অবস্থিত।
4. protected
সংশোধক
যদি একটি পদ্ধতি protected
সংশোধক দ্বারা চিহ্নিত করা হয়, তাহলে এটি একই শ্রেণী, একই প্যাকেজ এবং বংশধর (যে শ্রেণীতে পদ্ধতিটি ঘোষণা করা হয়েছে সেই শ্রেণীর উত্তরাধিকারী) থেকে অ্যাক্সেস করা যেতে পারে। আমরা জাভা কোর অনুসন্ধানে এই বিষয়টিকে আরও বিস্তারিতভাবে বিশ্লেষণ করব।
public
আপনি জাভা সিনট্যাক্স অনুসন্ধানের শেষে না পৌঁছানো পর্যন্ত আপনি আপনার সমস্ত পদ্ধতিতে (সেইসাথে আপনার সমস্ত ক্লাস এবং ক্লাস ভেরিয়েবল) মডিফায়ার ব্যবহার করতে পারেন । যখন আমরা সক্রিয়ভাবে OOP শিখতে শুরু করি তখন আপনার অন্যান্য মডিফায়ারের প্রয়োজন হবে।
কেন অ্যাক্সেস মডিফায়ার প্রয়োজন?
তারা একই সময়ে দশ এবং শত শত প্রোগ্রামার দ্বারা লিখিত বড় প্রকল্পের জন্য প্রয়োজনীয় হয়ে ওঠে।
কখনও কখনও এমন পরিস্থিতি থাকে যখন একজন প্রোগ্রামার একটি অত্যধিক বড় পদ্ধতিকে অংশে বিভক্ত করতে চায় এবং কোডের কিছু অংশ সাহায্যকারী পদ্ধতিতে স্থানান্তর করতে চায়। কিন্তু একই সময়ে, তিনি চান না যে অন্যান্য প্রোগ্রামাররা এই সহায়ক পদ্ধতিগুলিকে কল করুক, কারণ সংশ্লিষ্ট কোডটি সঠিকভাবে কাজ নাও করতে পারে।
তাই তারা এই অ্যাক্সেস মডিফায়ার নিয়ে এসেছিল। আপনি যদি প্রাইভেট শব্দ দিয়ে একটি হেল্পার পদ্ধতি চিহ্নিত করেন , তাহলে আপনার ক্লাস ব্যতীত অন্য কোনো কোড আপনার সাহায্যকারী পদ্ধতি দেখতে পাবে না।
2. static
কীওয়ার্ড
কীওয়ার্ড static
একটি পদ্ধতিকে স্ট্যাটিক করে তোলে। এর মানে কী তা আমরা পরে দেখব। আপাতত, স্ট্যাটিক পদ্ধতি সম্পর্কে কয়েকটি তথ্য মনে রাখবেন।
ঘটনা 1. একটি স্থির পদ্ধতি কোন বস্তুর সাথে সংযুক্ত নয় , বরং এটি যে শ্রেণীর মধ্যে এটি ঘোষণা করা হয়েছে তার অন্তর্গত। একটি স্ট্যাটিক পদ্ধতি কল করতে, আপনাকে লিখতে হবে:
ClassName.MethodName()
স্ট্যাটিক পদ্ধতির উদাহরণ:
শ্রেণির নাম | স্ট্যাটিক পদ্ধতির নাম | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
স্ট্যাটিক মেথডের নামের আগে ক্লাসের নাম বাদ দেওয়া যেতে পারে যদি আপনি স্ট্যাটিক মেথডকে ক্লাসের মধ্যে থেকে কল করেন। এই কারণেই আপনাকে বলা হয় প্রতিটি স্ট্যাটিক পদ্ধতির নামের আগে লিখতে হবে না ।Solution
ঘটনা 2. একটি স্ট্যাটিক পদ্ধতি তার নিজস্ব শ্রেণীর অ-স্ট্যাটিক পদ্ধতি অ্যাক্সেস করতে পারে না । একটি স্ট্যাটিক পদ্ধতি শুধুমাত্র স্ট্যাটিক পদ্ধতি অ্যাক্সেস করতে পারে। ফলস্বরূপ, আমরা main
মেথড স্ট্যাটিক থেকে যে সমস্ত পদ্ধতিকে কল করতে চাই সেগুলিকে আমরা ঘোষণা করি।
কেন? আপনি যখন OOP শেখা শুরু করবেন এবং স্ট্যাটিক পদ্ধতিগুলি কীভাবে কাজ করে তা বুঝতে পারলে আপনি নিজেই এই প্রশ্নের উত্তর দিতে পারবেন।
3. throws
কীওয়ার্ড
আরেকটি কীওয়ার্ড আছে যা আপনি সম্ভবত একটি পদ্ধতি ঘোষণায় দেখেছেন — throws
কীওয়ার্ড। অ্যাক্সেস মডিফায়ার এবং static
কীওয়ার্ডের বিপরীতে, এই কীওয়ার্ডটি মেথড প্যারামিটারের পরে রাখা হয়েছে:
public static Type name(parameters) throws Exception
{
method body
}
আমরা যখন ব্যতিক্রমগুলি অধ্যয়ন করব তখন আমরা একটু পরে এর সুনির্দিষ্ট অর্থ বিবেচনা করব।
কিন্তু এটিকে অতিমাত্রায় স্পর্শ করার জন্য, আমরা বলতে পারি যে থ্রোস কীওয়ার্ড দিয়ে চিহ্নিত একটি পদ্ধতি ত্রুটি (ব্যতিক্রম) নিক্ষেপ করতে পারে, যার অর্থ ক্লাসের উদাহরণ Exception
(এবং এটির উত্তরাধিকারী শ্রেণী)। যদি একটি ক্লাসে বিভিন্ন ধরণের ত্রুটি ঘটতে পারে, তাহলে আপনাকে তাদের প্রতিটিকে কমা দ্বারা আলাদা করে তালিকাভুক্ত করতে হবে।
4. main
পদ্ধতি
যে লাইনে একটি পদ্ধতি ঘোষণা করা হয়, যেটিতে সমস্ত মডিফায়ার রয়েছে, তা প্রভাবিত করবে কিভাবে এই পদ্ধতিটিকে অন্যান্য শ্রেণী এবং পদ্ধতি থেকে কল করা হয়। এটি ফলাফলের ধরণকে প্রভাবিত করে যে পদ্ধতিটি ফিরে আসবে এবং নির্দেশ করে যে এটি চালানোর সাথে সাথে কোন ত্রুটিগুলি সম্ভব।
এই ধরনের একটি লাইন একটি পদ্ধতি ঘোষণা বলা হয় এবং নিম্নলিখিত সাধারণ বিন্যাস আছে:
access modifier static Type name(parameters) throws exceptions
যেখানে , , , বা কিছুই access modifiers
দ্বারা প্রতিস্থাপিত হয় ;public
protected
private
যদি পদ্ধতিটি স্ট্যাটিক হয়, তাহলে static
কীওয়ার্ডটি প্রদর্শিত হবে (এটি অ-স্ট্যাটিক পদ্ধতির জন্য অনুপস্থিত)
Type
রিটার্ন মানের প্রকার ( void
যদি কোন ফলাফল না থাকে)
এখন আপনি সম্ভবত বুঝতে পেরেছেন যে পদ্ধতির ঘোষণায় সমস্ত কীওয়ার্ডের অর্থ কী main
:
public static void main(String[] args) throws Exception
কীওয়ার্ড দ্বারা নির্দেশিত যে কোনও ক্লাস থেকে পদ্ধতিতে অ্যাক্সেস main()
সম্ভব public
।
পদ্ধতিটি স্থির, তাই এটিকে স্পষ্টভাবে বলা যেতে পারে Solution.main()
।
পদ্ধতি main
কোন ফলাফল ফেরত না. রিটার্ন টাইপ হল void
(কোন প্রকারের নয়)।
পদ্ধতিটি main
আর্গুমেন্ট(!): স্ট্রিংগুলির একটি অ্যারে নেয়। এবং প্যারামিটার নামটি args
আমাদের মনকে 'আর্গুমেন্টস' নির্দেশ করে। প্রোগ্রামটি শুরু হলে, আপনি এটিকে আর্গুমেন্ট পাস করতে পারেন — স্ট্রিংয়ের একটি অ্যারে। args
তারা পদ্ধতিতে অ্যারের মধ্যে থাকবে main()
।
পদ্ধতিতে (বা এর বংশধরদের) মতো অ-হ্যান্ডেলড ত্রুটি Exception
ঘটতে পারে main()
।
GO TO FULL VERSION