জাভা POJOs এ ফিল্ড, ভেরিয়েবল, অ্যাট্রিবিউট এবং সম্পত্তি মধ্যে পার্থক্য কী?


142

গেটার / সেটটার রয়েছে এমন জাভা পজোগুলির অভ্যন্তরীণ ব্যক্তিগত ভেরিয়েবলগুলি উল্লেখ করার সময়, আমি নিম্নলিখিত পদগুলি ব্যবহার করেছি:

  • ক্ষেত্র
  • পরিবর্তনশীল
  • গুণ
  • সম্পত্তি

উপরের মধ্যে কোন পার্থক্য আছে? যদি তাই হয়, সঠিক শব্দটি ব্যবহার করার জন্য কী? এই সত্তাটি বজায় থাকলে কী আলাদা আলাদা পদ ব্যবহার করা যায়?

উত্তর:


117

এখান থেকে: http://docs.oracle.com/javase/tutorial/information/glossary.html


  • ক্ষেত্র

    • একটি শ্রেণীর ডেটা সদস্য। অন্যথায় নির্দিষ্ট না করা পর্যন্ত, কোনও ক্ষেত্র স্থির নয়।

  • সম্পত্তি

    • ব্যবহারকারীরা সেট করতে পারে এমন কোনও সামগ্রীর বৈশিষ্ট্য যেমন উইন্ডোর রঙ।

  • গুণ

    • উপরের শব্দকোষে তালিকাভুক্ত নয়

  • পরিবর্তনশীল

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

27
আমি এখনও একটি ক্ষেত্র এবং একটি সম্পত্তি মধ্যে পার্থক্য বুঝতে পারি না?
Koray Tugay

1
@ কোরেতুগে - কোনও ক্ষেত্রের সাথে সম্পর্কিত কোনও ক্ষেত্রের সাথে সম্পর্কিত তথ্যের মূল অংশ হিসাবে দেখুন। একটি সম্পত্তি (আমার কাছে) এমন কোনও বস্তুর বৈশিষ্ট্য যা বাইরের বিশ্বের কাছে দৃশ্যমান (এবং দৃশ্যত পরিবর্তনযোগ্য)।
jahroy

উপরোক্ত ভিত্তিতে, "সম্পত্তি সম্পত্তি নিষ্পত্তিযোগ্য ক্ষেত্র ব্যতীত" সম্পত্তি এবং ক্ষেত্রগুলি সমান "বলা কি ন্যায়সঙ্গত হবে ?
jdurston

2
@ জন - সম্ভবত উপরের উপর ভিত্তি করে, যা উল্লিখিত হয়েছে, ওরাকল থেকে প্রাপ্ত একটি অনুলিপি / পেস্ট। ব্যক্তিগতভাবে আমি এই পার্থক্যটি তৈরি করব যে কোনও সম্পত্তি প্রকাশ্যে দৃশ্যমান এবং সম্ভবত পরিবর্তনযোগ্য, অন্যদিকে ক্ষেত্রটি কেবলমাত্র শ্রেণীর দ্বারা ব্যবহৃত অভ্যন্তরীণ, ব্যক্তিগত ক্ষেত্র হতে পারে।
jahroy

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

89

হ্যা এখানে.

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

" মান "। এটি সম্ভবত স্কালার মতো উদীয়মান জেভিএম এফপি ভাষা থেকে এসেছে।

ক্ষেত্রটি একটি উদাহরণ শ্রেণিতে সাধারণত একটি ব্যক্তিগত পরিবর্তনশীল। এর অর্থ এই নয় যে এখানে একজন গেটর এবং সেটার রয়েছে।

বৈশিষ্ট্য একটি অস্পষ্ট শব্দ। এটি সহজেই এক্সএমএল বা জাভা নামকরণ এপিআই দিয়ে বিভ্রান্ত হতে পারে। এই শব্দটি ব্যবহার এড়াতে চেষ্টা করুন।

সম্পত্তি হ'ল গেটর এবং সেটার সমন্বয়।

নীচে কিছু উদাহরণ

public class Variables {

    //Constant
    public final static String MY_VARIABLE = "that was a lot for a constant";

    //Value
    final String dontChangeMeBro = "my god that is still long for a val";

    //Field
    protected String flipMe = "wee!!!";

    //Property
    private String ifYouThoughtTheConstantWasVerboseHaHa;

    //Still the property
    public String getIfYouThoughtTheConstantWasVerboseHaHa() {
        return ifYouThoughtTheConstantWasVerboseHaHa;
    }

    //And now the setter
    public void setIfYouThoughtTheConstantWasVerboseHaHa(String ifYouThoughtTheConstantWasVerboseHaHa) {
        this.ifYouThoughtTheConstantWasVerboseHaHa = ifYouThoughtTheConstantWasVerboseHaHa;
    }

}

আরও অনেক সংমিশ্রণ রয়েছে তবে আমার আঙ্গুলগুলি ক্লান্ত হয়ে উঠছে :)


3
@ ক্রিস থম্পসন এটির একটি কথোপকথনে গ্রহটিকে যাকে বলে তাকে তা জানায়। আরে এর জাভা ভাবেন। আমি তোমাকে কি বলবো. এটা বোঝা যায় না।
অ্যাডাম জেন্ট

4
@ অ্যাডজেন্ট জেভিএ = ঠিক অন্য একটি ভিগের সংক্ষিপ্ত বিবরণ :)
এমোরি

@ এমরি ওয়েল এটি পুরানো সুপরিচিত অক্সিমারন। এটি জাভা সম্পর্কিত কিছু নয়, সেই "সমস্যা" কমপক্ষে সি এবং সম্ভবত দীর্ঘকাল পর্যন্ত ফিরে আসে ... অবশ্যই এটিকে কেবল "ধ্রুবক" বলা থেকে কোনও কিছুই থামায় না
ভু

@ অ্যাডামেন্ট গুরুতর ছিলেন না, কেবল আপনাকে একটি কঠিন সময় দিয়েছিলেন ;-)
ক্রিস থমসন

1
শনাক্তকারী নামগুলি কীভাবে হাস্যকরভাবে দীর্ঘ হতে পারে (এবং এগুলি হাস্যকরভাবে দীর্ঘসময় পায়) এর মজা করার সময় ভাল ব্যাখ্যা।
সারগাস

5

আপনার প্রশ্নটি যদি জ্যাকএক্সবি ব্যবহার করে এবং সঠিকটি চয়ন করতে চাওয়া হয় XMLAccessType, আমারও একই প্রশ্ন ছিল। JAXB Javadoc বলছেন যে একটি "ক্ষেত্র" একটি অ-স্ট্যাটিক, অ-অস্থায়ী উদাহরণস্বরূপ পরিবর্তনশীল। একটি "সম্পত্তি" এর একটি গিটার / সেটার জুড়ি থাকে (সুতরাং এটি ব্যক্তিগত ভেরিয়েবল হওয়া উচিত)। একজন "পাবলিক সদস্য" সর্বজনীন, এবং সম্ভবত এটি একটি ধ্রুবক। জ্যাকএক্সবিতেও, একটি "অ্যাট্রিবিউট" কোনও এক্সএমএল উপাদানটির অংশটিকে বোঝায় <myElement myAttribute="first">hello world</myElement>

দেখে মনে হয় যে একটি জাভা "সম্পত্তি" সাধারণভাবে কমপক্ষে একজন গেটর বা কিছু অন্যান্য পাবলিক পদ্ধতির ক্ষেত্র হিসাবে সংজ্ঞায়িত করা যেতে পারে যা আপনাকে এর মান পেতে দেয়। কিছু লোক আরও বলে যে কোনও সম্পত্তির একটি সেটার থাকা দরকার। এই জাতীয় সংজ্ঞা জন্য, প্রসঙ্গ সবকিছু।


5

ডায়েটেল এবং ডিয়েটেলের ক্ষেত্র বনাম ভেরিয়েবলগুলি বোঝানোর একটি দুর্দান্ত উপায় রয়েছে।

"একসাথে একটি শ্রেণীর স্থিতিশীল ভেরিয়েবল এবং উদাহরণ ভেরিয়েবলগুলি এর ক্ষেত্র হিসাবে পরিচিত।" (বিভাগ 6.3)

"চলকগুলি কেবলমাত্র ক্ষেত্র হিসাবে ঘোষণা করা উচিত যদি তাদের শ্রেণীর একাধিক পদ্ধতিতে ব্যবহারের প্রয়োজন হয় বা প্রোগ্রামটি ক্লাসের পদ্ধতিগুলির কলগুলির মধ্যে তাদের মানগুলি সংরক্ষণ করতে পারে।" (বিভাগ 6.4)

সুতরাং একটি শ্রেণীর ক্ষেত্রগুলি হ'ল তার স্থিতিশীল বা উদাহরণ ভেরিয়েবল - অর্থাত্ ক্লাস স্কোপ সহ ঘোষণা করা।

রেফারেন্স - ডিয়েটেল পি।, ডিয়েটেল, এইচ। - জাভা Program কীভাবে প্রোগ্রাম করবেন (প্রাথমিক বিষয়গুলি), দশম সংস্করণ (2014)


3

আপনি যদি হাইবারনেট থেকে ক্লু নেন:

হাইবারনেট তার ক্ষেত্রের সাথে অবজেক্টের অবস্থা পড়বে / লিখবে। হাইবারনেট জাভা বিন বিন্যাসের বৈশিষ্ট্যগুলি ডিবি স্কিমায় মানচিত্র করে। হাইবারনেট অবজেক্টটি লোড / সংরক্ষণের জন্য ক্ষেত্রগুলিতে অ্যাক্সেস করুন। যদি ম্যাপিং সম্পত্তি দ্বারা সম্পন্ন হয়, হাইবারনেট গ্রাহক এবং সেটর ব্যবহার করে।

এটি এনক্যাপসুলেশন যা পৃথক করে তার অর্থ যেখানে আপনার কোনও ক্ষেত্রের জন্য গিটার / সেটটার রয়েছে এবং এটি সম্পত্তি বলা হয়, এবং আমরা সেই সম্পত্তিটির অন্তর্নিহিত ডেটা কাঠামো সেটমথোডের মধ্যে লুকিয়ে রাখি, আমরা সেটারগুলির অভ্যন্তরে অযাচিত পরিবর্তন রোধ করতে পারি। সমস্ত কি encapsulation জন্য দাঁড়িয়েছে ...

ক্ষেত্রগুলি ব্যবহারের আগে তাদের অবশ্যই ঘোষিত হতে হবে এবং শুরু করতে হবে। বেশিরভাগ ক্ষেত্রে শ্রেণীর অভ্যন্তরীণ ব্যবহারের জন্য।

বৈশিষ্ট্যগুলি সেটার দ্বারা পরিবর্তন করা যায় এবং সেগুলি গ্রাহকদের দ্বারা প্রকাশ করা হয়। এখানে ক্ষেত্রের দামের গিটার / সেটার রয়েছে তাই এটি সম্পত্তি।

class Car{
 private double price;
 public double getPrice() {…};
 private void setPrice(double newPrice) {…};
}

<class name="Car" …>
<property name="price" column="PRICE"/>
</class>

একইভাবে ক্ষেত্রগুলি ব্যবহার করে , [হাইবারনেটে এটি ক্ষেত্রগুলি ব্যবহার করে ম্যাপের প্রস্তাবিত উপায়, যেখানে ব্যক্তিগত আইডি আইডি; @ আইডি টীকায়িত করা হয় তবে সম্পত্তি সহ আপনার আরও নিয়ন্ত্রণ থাকে]

class Car{
  private double price;
}
<class name="Car">
<property name=" price" column="PRICE" access="field"/>
</class>

জাভা ডক বলেছেন: ফিল্ড একটি শ্রেণীর ডেটা সদস্য। একটি ক্ষেত্রটি অ স্থিতিশীল, অস্থায়ী উদাহরণ পরিবর্তনশীল। ক্ষেত্রটি একটি উদাহরণ শ্রেণিতে সাধারণত একটি ব্যক্তিগত পরিবর্তনশীল।


2

চলকগুলি ক্ষেত্র এবং অ-ক্ষেত্র সমন্বিত।

ক্ষেত্রগুলি হয় হতে পারে:

  1. স্থির ক্ষেত্র বা
  2. অ স্থির ক্ষেত্রগুলিকে ইনস্ট্যান্টেশনও বলা হয় যেমন x = F ()

নন-ফিল্ডগুলি হ'ল:

  1. স্থানীয় ভেরিয়েবল, ক্ষেত্রগুলির এনালগ তবে সেগুলির বাইরেও কোনও পদ্ধতির অভ্যন্তরে বা or
  2. x = f (y) এ y প্যারামিটার

উপসংহারে, ভেরিয়েবলগুলির মধ্যে মূল পার্থক্য হ'ল তারা ক্ষেত্র বা অ-ক্ষেত্র, মানে তারা কোনও পদ্ধতির অভ্যন্তরে বা সমস্ত পদ্ধতির বাইরে।

প্রাথমিক উদাহরণ (আমার বাক্যবিন্যাসের জন্য আমাকে ক্ষমা করুন, আমি কেবল একজন শিক্ষানবিস)

Class {    
    //fields    

    method1 {              
         //non-fields    

    }    
}

1

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

আপনি যদি আরও গভীরভাবে বুঝতে চান তবে নীচের উত্সটিতে যেতে পারেন: -

http://sajupauledayan.com/java/fields-vs-variables-in-java


0

প্রশ্নটি পুরানো তবে ভেরিয়েবল এবং ফিল্ডের মধ্যে আরেকটি গুরুত্বপূর্ণ পার্থক্য হ'ল ক্ষেত্রটি যখন ঘোষিত হয় তখন একটি ক্ষেত্র একটি ডিফল্ট মান পায় A অন্যদিকে, চলকটি অবশ্যই আরম্ভ করা উচিত।


কিভাবে একটি সম্পত্তি সম্পর্কে?
Koray Tugay

0

আমার বোঝা নীচের মত, এবং আমি এটি বলছি না যে এটি 100% সঠিক, আমারও ভুল হতে পারে ..

একটি পরিবর্তনশীল এমন একটি জিনিস যা আপনি ঘোষণা করেন যা ডিফল্টরূপে পরিবর্তিত হতে পারে এবং বিভিন্ন মান থাকতে পারে, তবে এটিকে স্পষ্টতই চূড়ান্ত বলেও বলা যেতে পারে। জাভাতে যে হবে:

public class Variables {

    List<Object> listVariable; // declared but not assigned
    final int aFinalVariableExample = 5; // declared, assigned and said to be final!

    Integer foo(List<Object> someOtherObjectListVariable) {
        // declare..
        Object iAmAlsoAVariable;

        // assign a value..
        iAmAlsoAVariable = 5;

        // change its value..
        iAmAlsoAVariable = 8;

        someOtherObjectListVariable.add(iAmAlsoAVariable);

        return new Integer();
    }
}

সুতরাং মূলত, একটি ভেরিয়েবল এমন কিছু যা ঘোষিত হয় এবং মানগুলি ধরে রাখতে পারে। উপরের পদ্ধতি foo উদাহরণস্বরূপ একটি ভেরিয়েবল ফিরিয়ে দেয় .. এটি পূর্ণসংখ্যার টাইপের একটি পরিবর্তনশীল দেয় যা নতুন পূর্ণসংখ্যার () স্মৃতি ঠিকানা রাখে; আপনি উপরে যে সমস্ত কিছু দেখতে পান তা ভেরিয়েবল, তালিকা পরিবর্তনশীল, এফিনাল পরিবর্তনশীল উদাহরণ এবং এখানে ব্যাখ্যা করা হয়েছে:

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

সম্পত্তি হ'ল এমন ক্ষেত্র যা অ্যাক্সেস / মিউটেশন করা যায়। গিটার / সেটারকে উন্মুক্ত করে এমন কোনও ক্ষেত্রই একটি সম্পত্তি।

আমি গুণাবলী সম্পর্কে জানি না এবং আমি আবারও বলতে চাই যে ভেরিয়েবলগুলি, ক্ষেত্র এবং বৈশিষ্ট্যগুলি কী তা এটি আমার বোঝা।


0
  • variable- নামক স্টোরেজ ঠিকানা। প্রতিটি ভেরিয়েবলের একটি টাইপ থাকে যা মেমরির আকার, বৈশিষ্ট্য এবং আচরণগুলি নির্ধারণ করে। জাভা ভেরিয়েবল ধরনের জন্য আছে: class variable, instance variable, local variable,method parameter
//pattern
<Java_type> <name> ;

//for example
int myInt;
String myString;
CustomClass myCustomClass;
  • field- সদস্য পরিবর্তনশীল বা ডেটা সদস্য। এটি variableএকটি class( class variableবা instance variable) এর ভিতরে একটি

  • attribute- কিছু নিবন্ধে আপনি এটি দেখতে পাচ্ছেন যে attributeএটি একটি objectপ্রতিনিধিত্বমূলক class variableObjectপরিচালনা করে attributesযার দ্বারা বৈশিষ্ট্যগুলির একটি সেট নির্ধারণ করা হয়।

CustomClass myCustomClass = new CustomClass();
myCustomClass.something = "poor fantasy"; //something is an attribute of myCustomClass object with a "poor fantasy" value
  • property- field+ + বেষ্টিত getter/setter। এটিতে একটি ক্ষেত্র বাক্য গঠন রয়েছে তবে হুডের নীচে পদ্ধতিগুলি ব্যবহার করে। Javaএটি খাঁটি আকারে সমর্থন করে না। কটাক্ষপাত Objective-C, Swift,Kotlin

উদাহরণস্বরূপ Kotlinনমুনা:

//field - Backing Field
class Person {
    var name: String = "default name"
        get() = field
        set(value) { field = value }
}

//using
val person = Person()
person.name = "Alex"    // setter is used
println(person.name)    // getter is used

[দ্রুত পরিবর্তনশীল, সম্পত্তি]

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