জাভাতে শ্রেণি ভেরিয়েবল এবং উদাহরণ ভেরিয়েবলের মধ্যে পার্থক্য কী? [বন্ধ]


16

আমি জাভাতে খুব নতুন এবং ক্লাস ভেরিয়েবল এবং উদাহরণ ভেরিয়েবলের মধ্যে পার্থক্য বুঝতে চাই।

উদাহরণ স্বরূপ:

class Bicycle { 
    static int cadence = 0; 
    int speed = 0; 
    int gear = 1; 
}

উদাহরণস্বরূপ ভেরিয়েবল এবং বর্গ ভেরিয়েবলগুলি একে অপরের থেকে আলাদা কীভাবে? এখানে কোন ভেরিয়েবলগুলি বর্গ ভেরিয়েবল, এবং কোন উদাহরণ ভেরিয়েবল? কীভাবে এটি সুযোগকে প্রভাবিত করে?


1
আপনি জাভা ™ টিউটোরিয়ালগুলি পড়া শুরু করেছেন বলে মনে হচ্ছে : শ্রেণীর সদস্যদের বোঝা যা এটি ব্যাখ্যা করে তবে এটি সম্পূর্ণরূপে উপলব্ধি করতে পারে নি।

উত্তর:


35

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

উদাহরণস্বরূপ ভেরিয়েবল:

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

public class Product {
    public int Barcode;
}

শ্রেণি ভেরিয়েবল:

এগুলি স্থিতিশীল সদস্য ভেরিয়েবল হিসাবেও পরিচিত এবং vari শ্রেণীর সমস্ত দৃষ্টান্তের সাথে ভাগ করা সেই পরিবর্তকের কেবল একটি অনুলিপি থাকে। যদি সেই পরিবর্তনশীলটিতে পরিবর্তন করা হয়, অন্য সমস্ত দৃষ্টান্তগুলি পরিবর্তনের প্রভাব দেখতে পাবে।

public class Product {
    public static int Barcode;
}

সম্পূর্ণ উদাহরণ:

// INSTANCE VARIABLE
public class Main {

    public static void main(String[] args) {

        Product prod1 = new Product();
        prod1.Barcode = 123456;

        Product prod2 = new Product();
        prod2.Barcode = 987654;

        System.out.println(prod1.Barcode);
        System.out.println(prod2.Barcode);
    }
}

public class Product {
    public int Barcode;
}

আউটপুটটি হবে:

123456

987654

এখন, ইনস্ট্যান্স ভেরিয়েবলটিকে স্থির করে ক্লাস ভেরিয়েবলে পরিবর্তন করুন:

//CLASS VARIABLE
public class Main {

    public static void main(String[] args) {

        Product prod1 = new Product();
        prod1.setBarcode(123456);
        Product prod2 = new Product();
        prod2.setBarcode(987654);

        System.out.println(prod1.getBarcode());
        System.out.println(prod2.getBarcode());
    }
}

public class Product {

    public static int Barcode;

    public int getBarcode() {
        return Barcode;
    }

    public void setBarcode(int value){
        Barcode = value;
    }
}

আমি Barcodeক্লাস থেকে নয়, বস্তু থেকে কল করতে সক্ষম হওয়ার মানটি পেতে এবং সেট করার জন্য অ স্থির পদ্ধতি ব্যবহার করেছি । আউটপুট নিম্নলিখিত হবে:

987654

987654


জাভা প্রশ্নের জন্য কেন সি # উদাহরণ?
বেসিল স্টারিঙ্কেভিচ

আমার চিন্তাভাবনা ঠিক exactly আমি জাভা প্রোগ্রামিং কেবল সি # না জানি, তাই আপনারা খুব বেশি সাহায্য করতে পারেন নি
স্কাইলার অ্যাডামস

1
@ বেসাইলস্টারিঙ্কেভিচ আমি মূলত একটি সি # বিকাশকারী এবং যেহেতু নীতি উভয়ের জন্যই গণনা করা হয় এবং ততটাই উত্তম হিসাবে আমি দ্রুত একটি সি # উদাহরণ সরবরাহ করেছি, অবশ্যই আমার সম্পর্কে ভুল। :) জাভাতে আমার উদাহরণ বদলেছে।
আব্বাস

2
@ স্কলারআডামস দুঃখিত, আমি ভুলভাবে খুব দ্রুত ধরে নিয়েছি যে যে কেউ জাভা জানে, সে সি জানে। আমি উদাহরণটি একটি জাভাতে পরিবর্তন করেছি, আশা করি এটির সাহায্য হবে।
আব্বাস

9
এই জাতীয় প্রশ্নের জন্য, আমি মনে করি এটি অপ্রাসঙ্গিক, জাভা বা সি # ব্যবহার করা হোক না কেন
টমাস জাঙ্ক

6

এটা তোলে ব্যাখ্যা করা হয় এখানে (একটি উদাহরণ Bicycleবর্গ পরিবর্তনশীল সঙ্গে বর্গ numberOfBicyclesএবং উদাহরণস্বরূপ ভেরিয়েবল cadence, speed, gear& id):

কখনও কখনও, আপনি ভেরিয়েবলগুলি রাখতে চান যা সমস্ত বস্তুর কাছে সাধারণ। এটি staticসংশোধনকারী দ্বারা সম্পন্ন হয় । যে ক্ষেত্রগুলির staticঘোষণায় সংশোধক রয়েছে তাদের স্ট্যাটিক ক্ষেত্র বা শ্রেণি ভেরিয়েবল বলা হয়। তারা ক্লাসের সাথে সম্পর্কিত, কোনও বস্তুর সাথে নয়। শ্রেণীর প্রতিটি উদাহরণ একটি বর্গ ভেরিয়েবল ভাগ করে, যা মেমরিতে এক স্থির স্থানে থাকে। যে কোনও বস্তু শ্রেণীর ভেরিয়েবলের মান পরিবর্তন করতে পারে তবে শ্রেণীর ভেরিয়েবলগুলি শ্রেণীর উদাহরণ তৈরি না করে ম্যানিপুলেটও করা যেতে পারে।

ক্লাস ভেরিয়েবল (ঘোষিত static) হ'ল একটি অবস্থান যা সমস্ত দৃষ্টান্তের জন্য সাধারণ।

উদাহরণস্বরূপ, numberOfBicyclesএকটি শ্রেণি পরিবর্তনশীল (যেহেতু এটি ঘোষণা করা হয়েছে static)। সমস্ত দৃষ্টান্ত এবং শ্রেণীর মধ্যে কেবল একই ধরণের (যেমন অবস্থান) সাধারণ। সুতরাং আপনি numberOfBicyclesযদি একটি পদ্ধতিতে পরিবর্তন করেন তবে অন্যান্য পদ্ধতিগুলি নতুন মানটি দেখতে পাবে (এমনকি বিভিন্ন Bicycleবস্তুর জন্যও )

এর বিপরীতে gear& idহয় উদাহরণস্বরূপ ভেরিয়েবল (কারণ তাদের ঘোষণা কোন হয়েছে staticপরিবর্তক)। প্রতিটি Bicycleবস্তুর নিজস্ব একটি থাকে। আপনি পরিবর্তন যদি gearকিছু Bicycle একটি , এবং যদি অন্য উদাহরণস্বরূপ হয়, পরিবর্তন a.gearউপর কোনো প্রভাব নেইb.gear

প্রতিটি জাভা অবজেক্ট একটি পৃথক মেমরি অঞ্চল যা কিছু মেটা ডেটা (উদাহরণস্বরূপ এর শ্রেণীর জন্য কিছু রেফারেন্স) এবং নিজস্ব উদাহরণ ভেরিয়েবল (সম্ভবত একটি সুপারক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত)। ক্লাসের ভেরিয়েবলগুলি ক্লাসে সাধারণ এবং সমস্ত দৃষ্টান্তে ভাগ করে নেওয়া হয়।

আরও দেখুন অবজেক্ট (কম্পিউটার বিজ্ঞান)ইন্সটান্স পরিবর্তনশীল wikipages।


4

উদাহরণস্বরূপ পরিবর্তনশীল:

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

    Class InstanceDemo {
    
         // this instance variable is visible for any child class.
           public String name = "Testing";
    
         // count variable is visible in Demo class only.
           private int count = 2;
    }

উদাহরণ ভেরিয়েবল অ্যাক্সেস করার পদ্ধতি:

InstanceDemo demo = new InstanceDemo ();

System.out.println("Access Instance variable: " + demo.count + " , "+demo.name );

আউটপুট: 2, পরীক্ষা

শ্রেণি পরিবর্তনশীল:

  • ক্লাস ভেরিয়েবল ক্লাসের অন্তর্গত।
  • ভ্যারিয়েবলের আগে ক্লাস ভেরিয়েবল "স্ট্যাটিক" কীওয়ার্ড যুক্ত করে তৈরি করা হয়।
  • একে স্ট্যাটিক ভেরিয়েবলও বলা হয়।
  • এবং সর্বাধিক গুরুত্বপূর্ণ শ্রেণীর ভেরিয়েবল একটি শ্রেণীর সমস্ত উদাহরণের জন্য একটি একক ভাগ করা মান বজায় রাখে, এমনকি শ্রেণীর কোনও উদাহরণ বস্তু উপস্থিত না থাকলেও।

        Class ClassDemo {
    
         // count variable is Same for all instance of this class
           public static int count = 2;
    }

শ্রেণীর পরিবর্তনশীল অ্যাক্সেস করার পদ্ধতি:

System.out.println("Access Class variable: " + ClassDemo.count );
//class variable is directly refer with class name

আউটপুট: 2

শ্রেণি পরিবর্তনশীল এবং ইনস্ট্যান্স পরিবর্তনশীল মধ্যে সংক্ষিপ্ত পার্থক্য:

  • ইনস্ট্যান্স ভেরিয়েবলগুলির একটি শ্রেণির প্রতিটি উদাহরণের জন্য পৃথক মান রয়েছে। শ্রেণীর ভেরিয়েবলগুলি শ্রেণীর সমস্ত দৃষ্টান্তের জন্য একটি একক ভাগ করা মান বজায় রাখে, এমনকি যদি class শ্রেণীর কোনও উদাহরণ বস্তু উপস্থিত না থাকে।
  • উদাহরণস্বরূপ ভেরিয়েবলকে শ্রেণি ভেরিয়েবলে পরিবর্তন করতে আপনি স্ট্যাটিক কীওয়ার্ডটি ব্যবহার করবেন।
  • উদাহরণস্বরূপ এবং বর্গ ভেরিয়েবল উভয়ই ক্লাস স্তরে ঘোষণা করা হয়, পদ্ধতিগুলির মধ্যে নয়।

3

class variablesএবং instanceভেরিয়েবলের মধ্যে পার্থক্যটি কেবল একটি প্রশ্ন who knows what?

একটি instance variableকেবল সেই কংক্রিটের উদাহরণ হিসাবে পরিচিত (= আবদ্ধ ) - সুতরাং নামটি।

  public class Person {
       private String firstName;
       private String lastName;
  [...]
  }

শ্রেণীর সংজ্ঞাটি কংক্রিটের জিনিসগুলি তৈরির একটি নীলনকের মতো like সম্ভবত এই পয়েন্ট আপনাকে কিছুটা বিভ্রান্ত করে । তবে এটি এইভাবে লেখার সাথে সাথে প্রতিটি পরিবর্তনশীল তার কংক্রিট অবজেক্টের সাথে আবদ্ধ হবে: উদাহরণস্বরূপ প্রতিটি ব্যক্তির নিজস্ব প্রথম নাম রয়েছে

একটি class variableঅন্যদিকে হয় - যেমন নাম বলছেন - প্রতিটি এবং একটি বর্গ প্রতিটি সদস্যের কাছে পরিচিত; বা প্রযুক্তিগতভাবে: এটি শ্রেণি স্তরে পরিচিত / আবদ্ধ । সাধারণ উদাহরণটি আপনি কতগুলি বস্তুর তৈরি করেছেন তার একটি পাল্টা - যদিও এটি একটি খুব সমস্যাযুক্ত উদাহরণ; তবে এটি প্রাথমিক পর্যায়ে কিছু যায় আসে না।

  public class Person {
       private String firstName;
       private String lastName;
  [...]
       static int numberOfPersons = 0
  }

numberOfPersonsঘোষিত হয় staticযা class variablesএবং এর মধ্যে দূর করার কীওয়ার্ড instance variabes। শ্রেণীর সংজ্ঞার মধ্যে অন্যান্যগুলির মতো ভেরিয়েবল ঘোষিত হয়। তবে staticকীওয়ার্ড সিগন্যাল, এটি আলাদা।

  • firstName, lastNameহয় উদাহরণস্বরূপ ভেরিয়েবল এবং যে কংক্রিট উদাহরণ হিসেবে বলা যায় বাধ্য

  • numberOfPersons ক্লাসে আবদ্ধ, যাতে প্রতিটি ইভেন্ট এই পরিবর্তনশীল অ্যাক্সেস করতে পারে।

TL; ড

যে স্থানে ভেরিয়েবল সংজ্ঞায়িত করা হয় তা ক্লাস সংজ্ঞা।

ক্লাস ভেরিয়েবলগুলি ক্লাস স্তরে বা সীমাবদ্ধ হিসাবে পরিচিত, অর্থাত প্রতিটি কংক্রিটের উদাহরণটিতে এটির অ্যাক্সেস রয়েছে। শ্রেণি ভেরিয়েবল সংজ্ঞায়িত করতে আপনি কীওয়ার্ডটি ব্যবহার করেন static

ইনস্ট্যান্স ভেরিয়েবলগুলি কেবলমাত্র একটি উদাহরণ স্তরে পরিচিত। আপনি staticকীওয়ার্ড ছাড়াই এগুলি সংজ্ঞায়িত করেন ।

জাভা জন্য আরও ডকুমেন্টেশন এখানে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.