কম্পিউটার টিউটোরিয়াল

জাভাতে অ্যাক্সেস মডিফায়ার এবং নন-অ্যাক্সেস মডিফায়ারের পার্থক্য কী?


Access Modifiers (অ্যাক্সেস মডিফায়ার)

অ্যাক্সেস মডিফায়ার হলো সেই কিওয়ার্ডগুলো যেগুলো ক্লাস, ভেরিয়েবল, মেথড এবং কন্সট্রাক্টরের সাথে ব্যবহার করা হয় তাদের অ্যাক্সেস লেভেল কন্ট্রোল করার জন্য।

জাভাতে চারটি অ্যাক্সেস মডিফায়ার রয়েছে।

  • Default

    যদি কোনো অ্যাক্সেস মডিফায়ার স্পেসিফাই না করা হয়, জাভা সেটিকে ডিফল্ট মডিফায়ার হিসেবে বিবেচনা করে। ডিফল্ট মডিফায়ার স্কোপ প্যাকেজের ভিতরে সীমাবদ্ধ।
  • Public

    Public মডিফায়ার স্কোপ হলো সব জায়গায় অ্যাক্সেস করা এবং প্যাকেজের বাইরেও।
  • Private

    Private মডিফায়ার স্কোপ হলো ক্লাসের ভিতরে অ্যাক্সেস করা।
  • Protected

    Protected মডিফায়ার স্কোপ প্যাকেজের ভিতরে সীমাবদ্ধ এবং সকল সাবক্লাসে।

Non-access Modifiers (নন-অ্যাক্সেস মডিফায়ার)

নন-অ্যাক্সেস মডিফায়ার হলো সেই কিওয়ার্ডগুলো যেগুলোর অ্যাক্সেস লেভেলের সাথে কিছুই নেই কিন্তু স্পেসিফাই করলে স্পেশাল ফাংশনালিটি প্রদান করে।

  • Final

    Final কিওয়ার্ড ভেরিয়েবল, মেথড বা ক্লাসের সাথে ব্যবহার করা যায়। এটি এর কনটেন্ট মডিফাই হয়ে যাওয়া থেকে বাধা দেয়। ক্লাসের সাথে ডিক্লেয়ার করলে ক্লাসকে এক্সটেন্ড করা থেকে বাধা দেয়।
  • Static

    Static মডিফায়ার ক্লাস ভেরিয়েবল এবং মেথডের সাথে ব্যবহার করা হয় যেগুলো ক্লাসের ইনস্ট্যান্স ছাড়া অ্যাক্সেস করা যায়। Static ভেরিয়েবলগুলোর শুধু একটু স্টোরেজ থাকে। সকল অবজেক্ট static ভেরিয়েবলের সিঙ্গেল স্টোরেজ শেয়ার করে। সেগুলো অবজেক্ট ছাড়া সরাসরি অ্যাক্সেস করা যায়। Static মেথডও ডিক্লেয়ার করা যায়। main() মেথড জনপ্রিয় static মেথড। Static ব্লকও ডিক্লেয়ার করা যায় এবং মেইন মেথডের আগে এক্সিকিউট হয়।
  • Abstract

    Abstract ক্লাস এবং মেথডের সাথে ব্যবহার করা যায়। একটি অ্যাবস্ট্রাক্ট ক্লাস কখনো ইনস্ট্যানশিয়েট করা যায় না এবং এর উদ্দেশ্য শুধু এক্সটেন্ড করা। Abstract মেথডগুলো বডি ছাড়া ডিক্লেয়ার করা হয় এবং সেমিকোলন দিয়ে শেষ হয়। যদি একটি ক্লাসে অ্যাবস্ট্রাক্ট মেথড থাকে, সেটিও অবশ্যই abstract স্পেসিফাই করতে হবে। একটি ক্লাস যা অ্যাবস্ট্রাক্ট ক্লাস এক্সটেন্ড করে, সেটি অবশ্যই তার সকল অ্যাবস্ট্রাক্ট মেথড ইমপ্লিমেন্ট করতে হবে।
  • Synchronized

    এটি ইন্ডিকেট করে যে মেথডটি একবারে শুধু এক থ্রেড দ্বারা অ্যাক্সেস করা যাবে।
  • Transient

    একটি ইনস্ট্যান্স ভেরিয়েবলকে transient মার্ক করা হয় JVM-কে ইন্ডিকেট করার জন্য যে সيريয়ালাইজেশন করার সময় সেই নির্দিষ্ট ভেরিয়েবলটি স্কিপ করবে।
  • Volatile

    Volatile কিওয়ার্ড একটি জাভা ভেরিয়েবলকে "being stored in main memory" হিসেবে মার্ক করতে ব্যবহার করা হয়। এর মানে প্রতিবার volatile ভেরিয়েবল রিড করলে কম্পিউটারের মেইন মেমরি থেকে রিড হবে CPU cache থেকে না এবং volatile ভেরিয়ेबলে রাইট করলে মেইন মেমরিতে লেখা হবে শুধু CPU cache-এ নয়।
  • Strictfp

    Strictfp কিওয়ার্ড জাভায় নিশ্চিত করে যে ফ্লোটিং-পয়েন্ট ভেরিয়েবলে অপারেশন করলে প্রতিটি প্ল্যাটফর্মে একই রেজাল্ট পাওয়া যাবে।
  1. জাভাতে JRadioButton এবং JCheckBox-এর পার্থক্য কী?

  2. জাভাতে JTextField এবং JTextArea-এর পার্থক্য কী?

  3. জাভাতে JFrame এবং JDialog-এর পার্থক্য কী?

  4. জাভাতে GridLayout এবং GridBagLayout-এর পার্থক্য কী?