Jelaskan Perbedaan Antara Properti Dan Aksesori
Jelaskan Perbedaan Antara Properti Dan Aksesori
Apa perbedaan antara bidang, variabel, atribut, dan properti di POJO Java?
Ketika merujuk ke variabel pribadi internal POJO Java yang memiliki getter / setter, saya telah menggunakan istilah berikut:
- bidang
- variabel
- atribut
- Properti
Apakah ada perbedaan di atas? Jika demikian, apa istilah yang tepat untuk digunakan? Apakah ada istilah yang berbeda untuk digunakan ketika entitas ini bertahan?
Jawaban:
Dari sini: http://docs.oracle.com/javase/tutorial/information/glossary.html
-
bidang
- Anggota data kelas. Kecuali ditentukan sebaliknya, bidang tidak statis.
-
Properti
- Karakteristik objek yang dapat diatur pengguna, seperti warna jendela.
-
atribut
- Tidak tercantum dalam daftar istilah di atas
-
variabel
- Detail data bernama oleh pengidentifikasi. Setiap variabel memiliki tipe, seperti int atau Object, dan cakupan. Lihat juga variabel kelas, variabel instan, variabel lokal.
Ya ada.
Variabel
bisa lokal, bidang, atau konstan (walaupun ini secara teknis salah). Itu atribut seperti samar. Anda juga harus tahu bahwa beberapa orang suka memanggil variabel
final
non-statis (lokal atau case)
”
Nilai
“. Ini mungkin berasal dari bahasa JVM FP yang baru muncul seperti Scala.
Field pada
umumnya adalah variabel pribadi pada kelas instan. Bukan berarti ada pengambil dan penyetel.
Atribut
adalah istilah yang tidak jelas. Dapat dengan mudah dikacaukan dengan XML atau Coffee Naming API. Cobalah untuk menghindari penggunaan istilah itu.
Properti
adalah kombinasi pengambil dan penyetel.
Beberapa contoh di bawah ini
public
grade
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
Cord
flipMe
=
"wee!!!"
;
//Property
individual
String
ifYouThoughtTheConstantWasVerboseHaHa
;
//Still the property
public
String
getIfYouThoughtTheConstantWasVerboseHaHa
()
{
return
ifYouThoughtTheConstantWasVerboseHaHa
;
}
//And now the setter
public
void
setIfYouThoughtTheConstantWasVerboseHaHa
(
String
ifYouThoughtTheConstantWasVerboseHaHa
)
{
this
.
ifYouThoughtTheConstantWasVerboseHaHa
=
ifYouThoughtTheConstantWasVerboseHaHa
;
}
}
Ada banyak kombinasi lagi, tetapi jari-jari saya mulai lelah 🙂
Jika pertanyaan Anda diminta dengan menggunakan JAXB dan ingin memilih yang benar
XMLAccessType
, saya memiliki pertanyaan yang sama. JAXB Javadoc mengatakan bahwa “field” adalah variabel case non-statis, not-transient. “Properti” memiliki pasangan pengambil / penyetel (jadi itu harus variabel pribadi). “Anggota publik” adalah publik, dan karena itu mungkin konstan. Juga di JAXB, “atribut” merujuk ke bagian dari elemen XML, seperti pada
<myElement myAttribute="showtime">how-do-you-do world</myElement>
.
Tampaknya “properti” Coffee, secara umum, dapat didefinisikan sebagai bidang dengan setidaknya pengambil atau metode publik lainnya yang memungkinkan Anda untuk mendapatkan nilainya. Beberapa orang juga mengatakan bahwa properti perlu memiliki setter. Untuk definisi seperti ini, konteks adalah segalanya.
Dietel dan Dietel memiliki cara yang bagus untuk menjelaskan bidang vs variabel.
“Bersama-sama variabel statis kelas dan variabel instan dikenal sebagai bidangnya.” (Bagian 6.3)
“Variabel harus dinyatakan sebagai bidang hanya jika mereka diperlukan untuk digunakan di lebih dari satu metode kelas atau jika plan harus menyimpan nilai-nilai mereka antara panggilan ke metode kelas.” (Bagian 6.four)
Jadi bidang kelas adalah variabel statis atau instance – yaitu dideklarasikan dengan ruang lingkup kelas.
Referensi – Dietel P., Dietel, H. – Java ™ Cara Memprogram (Objek Awal), Edisi Kesepuluh (2014)
Jika Anda mengambil petunjuk dari Hide:
Hide membaca / menulis status Object dengan bidangnya. Hibernate juga memetakan properti gaya Java Bean ke DB Schema. Hibernasi, Akses bidang untuk memuat / menyimpan objek. Jika pemetaan dilakukan oleh properti, hibernate menggunakan pengambil dan penyetel.
Itu adalah Enkapsulasi yang membedakan cara di mana Anda memiliki pengambil / setter untuk bidang dan itu disebut properti, dengan itu dan kami menyembunyikan struktur data yang mendasari properti itu dalam setMethod, kami dapat mencegah perubahan yang tidak diinginkan di dalam setter. Semua enkapsulasi adalah singkatan dari …
Bidang
harus dideklarasikan dan diinisialisasi sebelum digunakan. Sebagian besar untuk penggunaan internal kelas.
Properti
dapat diubah oleh setter dan mereka diekspos oleh getter. Di sini harga lapangan memiliki pengambil / penentu sehingga merupakan properti.
grade
Car
{
private
double
price
;
public
double
getPrice
()
{…};
private
void
setPrice
(
double
newPrice
)
{…};
}
<
class
proper name
=
"Machine"
…>
<
property name
=
"toll"
column
=
"PRICE"
/>
</
grade
>
Demikian pula dengan menggunakan
bidang
, [Dalam hibernasi itu adalah cara yang disarankan untuk PETA menggunakan bidang, di mana private int id; dianotasi @Id, tetapi dengan Properti Anda memiliki kendali lebih besar]
grade
Automobile
{
private
double
price
;
}
<
grade
name
=
"Car"
>
<
property name
=
" price"
column
=
"PRICE"
access
=
"field"
/>
</
form
>
Coffee doc mengatakan: Field adalah data anggota suatu kelas. Bidang adalah variabel contoh tidak statis dan tidak transien. Field pada umumnya adalah variabel pribadi pada kelas instan.
Variabel terdiri dari bidang dan not-bidang.
Bidang dapat berupa:
- Bidang statis atau
- bidang not-statis juga disebut instantiasi misalnya 10 = F ()
Non-bidang dapat berupa:
- variabel lokal, analog bidang tetapi di dalam metode daripada di luar semuanya, atau
- parameter misalnya y dalam x = f (y)
Sebagai kesimpulan, perbedaan utama antara variabel adalah apakah mereka adalah bidang atau non-bidang, yang berarti apakah mereka berada di dalam suatu metode atau di luar semua metode.
Contoh Dasar (permisi untuk sintaks saya, saya hanya pemula)
Class
{
//fields
method1
{
//non-fields
}
}
Sebenarnya kedua istilah ini sering digunakan untuk mewakili hal yang sama, tetapi ada beberapa situasi luar biasa. Bidang dapat menyimpan keadaan suatu objek. Juga semua bidang adalah variabel. Jadi jelas bahwa bisa ada variabel yang bukan bidang. Jadi melihat ke dalam 4 jenis variabel (variabel kelas, variabel instan, variabel lokal dan variabel parameter) kita dapat melihat bahwa variabel kelas dan variabel instan dapat mempengaruhi keadaan suatu objek. Dengan kata lain jika variabel kelas atau instance berubah, keadaan objek berubah. Jadi kita dapat mengatakan bahwa variabel kelas dan variabel instan adalah bidang sedangkan variabel lokal dan variabel parameter tidak.
Jika Anda ingin memahami lebih dalam, Anda dapat mengunjungi sumber di bawah ini: –
http://sajupauledayan.com/java/fields-vs-variables-in-java
Pertanyaannya sudah lama tetapi perbedaan penting lainnya antara variabel dan bidang adalah bahwa bidang mendapatkan nilai default ketika dideklarasikan. Variabel, di sisi lain, harus diinisialisasi.
Pemahaman saya seperti di bawah ini, dan saya tidak mengatakan bahwa ini 100% benar, saya mungkin juga salah ..
Sebuah
variabel
adalah sesuatu yang Anda menyatakan, yang dapat dengan perubahan default dan memiliki nilai yang berbeda, tapi itu juga bisa secara eksplisit dikatakan terminal. Di Jawa itu adalah:
public
class
Variables
{
Listing
<
Object
>
listVariable
;
// declared but not assigned
final
int
aFinalVariableExample
=
v
;
// declared, assigned and said to exist final!
Integer
foo
(
List
<
Object
>
someOtherObjectListVariable
)
{
// declare..
Object
iAmAlsoAVariable
;
// assign a value..
iAmAlsoAVariable
=
5
;
// change its value..
iAmAlsoAVariable
=
viii
;
someOtherObjectListVariable
.
add together
(
iAmAlsoAVariable
);
render
new
Integer
();
}
}
Jadi pada dasarnya, variabel adalah segala sesuatu yang dideklarasikan dan dapat menyimpan nilai. Metode foo di atas mengembalikan variabel misalnya .. Ia mengembalikan variabel tipe Integer yang menyimpan alamat memori Integer baru (); Segala sesuatu yang Anda lihat di atas juga variabel, listVariable, aFinalVariableExample dan dijelaskan di sini:
Bidang adalah variabel yang cakupannya lebih jelas (atau konkret). Variabel yang kembali dari ruang lingkup metode foo tidak jelas dalam contoh di atas, jadi saya tidak akan menyebutnya bidang. Di sisi lain, iAmAlsoVariable adalah bidang “lokal”, dibatasi oleh ruang lingkup metode foo, dan listVariable adalah bidang “instance” di mana ruang lingkup bidang (variabel) dibatasi oleh lingkup objek.
Properti adalah bidang yang dapat diakses / dimutasi. Setiap bidang yang memperlihatkan pengambil / penyetel adalah properti.
Saya tidak tahu tentang atribut dan saya juga ingin mengulangi bahwa ini adalah pemahaman saya tentang variabel, bidang, dan properti apa.
-
variable
– Alamat penyimpanan bernama. Setiap variabel memiliki tipe yang mendefinisikan ukuran memori, atribut, dan perilaku. Ada untuk jenis variabel Java:
grade variable
,
instance variable
,
local variable
,method parameter
//pattern
<
Java_type
>
<
name
>
;
//for case
int
myInt
;
Cord
myString
;
CustomClass
myCustomClass
;
-
field
– variabel anggota atau anggota data. Itu adalah
variable
di dalam
class
(
class variable
atau
instance variable
) -
attribute
– dalam beberapa artikel Anda dapat menemukan bahwa
aspect
itu adalah
object
representasi dari
class variable
.
Object
beroperasi dengan
attributes
yang mendefinisikan seperangkat karakteristik.
CustomClass
myCustomClass
=
new
CustomClass
();
myCustomClass
.
something
=
"poor fantasy"
;
//something is an attribute of myCustomClass object with a "poor fantasy" value
-
property
–
field
+ dibatasi
getter/setter
. Ini memiliki sintaks lapangan tetapi menggunakan metode di bawah tenda.
Java
tidak mendukungnya dalam bentuk murni. Lihatlah
Objective-C
,
Swift
,Kotlin
Contohnya
Kotlin
contoh:
//field - Backing Field
class
Person
{
var proper noun
:
String
=
"default proper name"
get
()
=
field set
(
value
)
{
field
=
value
}
}
//using
val person
=
Person
()
person
.
name
=
"Alex"
// setter is used
println
(
person
.
proper name
)
// getter is used
[Variabel cepat, properti]
Jelaskan Perbedaan Antara Properti Dan Aksesori
Source: https://qastack.id/programming/10115588/what-is-the-difference-between-field-variable-attribute-and-property-in-java