প্রাথমিকভাবে, আমারও এই ধারণাটি বুঝতে খুব কঠিন সময় হয়েছিল। সুতরাং আমি এটি একটি উদাহরণের সাহায্যে আপনাকে ব্যাখ্যা করি।
এই কোটলিন বর্গ বিবেচনা করুন
class DummyClass {
var size = 0;
var isEmpty
get() = size == 0
set(value) {
size = size * 2
}
}
এখন আমরা কোডটির দিকে নজর দিই, আমরা দেখতে পাচ্ছি যে এর 2 টি বৈশিষ্ট্য রয়েছে - size( - ডিফল্ট অ্যাক্সেসর সহ) এবং isEmpty(কাস্টম অ্যাকসেসর সহ)। তবে এটির কেবল 1 ক্ষেত্র রয়েছে size। এটির জন্য কেবল 1 টি ক্ষেত্র রয়েছে তা বুঝতে, আসুন এই শ্রেণীর জাভা সমতুল্য দেখি।
সরঞ্জামগুলিতে যান -> কোটলিন -> অ্যান্ড্রয়েড স্টুডিওতে কোটলিন বাইটকোড দেখান। ডিকম্পাইল ক্লিক করুন।
public final class DummyClass {
private int size;
public final int getSize() {
return this.size;
}
public final void setSize(int var1) {
this.size = var1;
}
public final boolean isEmpty() {
return this.size == 0;
}
public final void setEmpty(boolean value) {
this.size *= 2;
}
}
স্পষ্টতই আমরা দেখতে পাচ্ছি যে জাভা শ্রেণীর জন্য কেবল গেটর এবং সেটার ফাংশন isEmptyরয়েছে এবং এর জন্য কোনও ক্ষেত্র ঘোষিত হয়নি। একইভাবে কোটলিনেও সম্পত্তির পক্ষে কোনও সমর্থন ক্ষেত্র নেই isEmpty, কারণ সম্পত্তিটি সেই ক্ষেত্রের উপর নির্ভর করে না। সুতরাং কোন সমর্থন ক্ষেত্র।
এখন আসুন কাস্টম গেটর এবং isEmptyপ্রোপার্টিটির সেটটারটি সরান ।
class DummyClass {
var size = 0;
var isEmpty = false
}
এবং উপরের শ্রেণীর জাভা সমতুল্য
public final class DummyClass {
private int size;
private boolean isEmpty;
public final int getSize() {
return this.size;
}
public final void setSize(int var1) {
this.size = var1;
}
public final boolean isEmpty() {
return this.isEmpty;
}
public final void setEmpty(boolean var1) {
this.isEmpty = var1;
}
}
এখানে আমরা উভয় ক্ষেত্র sizeএবং isEmpty। isEmptyএকটি ব্যাকিং ফিল্ড কারণ isEmptyসম্পত্তির জন্য প্রাপ্তি এবং সেটটার এর উপর নির্ভর করে।