Saya dari dunia php. Bisakah Anda menjelaskan apa itu getter dan setter dan dapat memberi Anda beberapa contoh?
Saya dari dunia php. Bisakah Anda menjelaskan apa itu getter dan setter dan dapat memberi Anda beberapa contoh?
Jawaban:
Tutorial tidak benar-benar diperlukan untuk ini. Baca tentang enkapsulasi
private String myField; //"private" means access to this is restricted
public String getMyField()
{
//include validation, logic, logging or whatever you like here
return this.myField;
}
public void setMyField(String value)
{
//include more logic
this.myField = value;
}
someObj.getTime().setHour(5)
tidak akan mempengaruhi someObj
keadaan internal. Juga setter dan getter (accessor dan mutators dengan nama yang lebih bagus) memiliki tanda tangan metode yang sangat ketat yang berarti bahwa getter tidak memiliki parameter apa pun. Metode secara umum seharusnya hanya melakukan satu hal.
this
kunci bersifat opsional kecuali jika ada konflik dengan sesuatu yang memiliki cakupan yang lebih spesifik. Dalam contoh yang Anda berikan, penyetel yang dibuat akan memiliki satu parameter yang namanya cocok dengan nama bidang, oleh karena itu this.fieldName = fieldName
, digunakan untuk membedakan bahwa bidang sedang ditetapkan daripada parameter yang ditetapkan ke dirinya sendiri seperti yang fieldName = fieldname
akan dicapai. Tidak ada konflik seperti itu di pengambil.
Di Java getter dan setter adalah fungsi yang benar-benar biasa. Satu-satunya hal yang membuat mereka getter atau setter adalah konvensi. Pengambil untuk foo disebut getFoo dan penyetel disebut setFoo. Dalam kasus boolean, pengambil disebut isFoo. Mereka juga harus memiliki deklarasi spesifik seperti yang ditunjukkan dalam contoh getter dan setter untuk 'name' ini:
class Dummy
{
private String name;
public Dummy() {}
public Dummy(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
Alasan menggunakan getter dan setter alih-alih menjadikan anggota Anda publik adalah karena hal itu memungkinkan untuk mengubah implementasi tanpa mengubah antarmuka. Selain itu, banyak alat dan perangkat yang menggunakan refleksi untuk memeriksa objek hanya menerima objek yang memiliki getter dan setter. JavaBeans misalnya harus memiliki getter dan setter serta beberapa persyaratan lainnya.
error: invalid method declaration; return type required
class Clock {
String time;
void setTime (String t) {
time = t;
}
String getTime() {
return time;
}
}
class ClockTestDrive {
public static void main (String [] args) {
Clock c = new Clock;
c.setTime("12345")
String tod = c.getTime();
System.out.println(time: " + tod);
}
}
Saat Anda menjalankan program, program dimulai di induk,
setTime()
dipanggil oleh objek ctime
disetel ke nilai yang dilewatigetTime()
disebut dengan objek ctod
dan tod
dicetakAnda mungkin juga ingin membaca " Mengapa metode pengambil dan penyetel itu jahat ":
Meskipun metode pengambil / penyetel adalah hal yang umum di Java, metode ini tidak berorientasi objek (OO). Faktanya, mereka dapat merusak pemeliharaan kode Anda. Selain itu, kehadiran berbagai metode pengambil dan penyetel merupakan tanda bahaya bahwa program tersebut belum tentu dirancang dengan baik dari perspektif OO.
Artikel ini menjelaskan mengapa Anda tidak boleh menggunakan getter dan setter (dan kapan Anda bisa menggunakannya) dan menyarankan metodologi desain yang akan membantu Anda keluar dari mentalitas pengambil / penyetel.
Berikut contoh javascript dari mozilla:
var o = { a:0 } // `o` is now a basic object
Object.defineProperty(o, "b", {
get: function () {
return this.a + 1;
}
});
console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)
Saya telah menggunakan ini BANYAK karena mereka luar biasa . Saya akan menggunakannya ketika mulai menyukai coding + animasi saya. Misalnya, buat penyetel yang berurusan dengan Number
yang menampilkan nomor itu di halaman web Anda. Ketika penyetel digunakan, ia menganimasikan nomor lama ke nomor baru menggunakan tweener . Jika angka awal adalah 0 dan Anda mengaturnya menjadi 10 maka Anda akan melihat angka-angka berubah dengan cepat dari 0 menjadi 10, katakanlah, setengah detik. Pengguna menyukai barang ini dan menyenangkan untuk dibuat.
Contoh dari sof
<?php
class MyClass {
private $firstField;
private $secondField;
public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}
public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
return $this;
}
}
?>
kutipan:
Berikut adalah contoh untuk menjelaskan cara paling sederhana menggunakan getter dan setter di java. Seseorang dapat melakukan ini dengan cara yang lebih mudah tetapi pengambil dan penyetel memiliki sesuatu yang istimewa yaitu saat menggunakan anggota pribadi kelas induk di kelas anak dalam warisan. Anda dapat membuatnya mungkin dengan menggunakan pengambil dan penyetel.
package stackoverflow;
public class StackoverFlow
{
private int x;
public int getX()
{
return x;
}
public int setX(int x)
{
return this.x = x;
}
public void showX()
{
System.out.println("value of x "+x);
}
public static void main(String[] args) {
StackoverFlow sto = new StackoverFlow();
sto.setX(10);
sto.getX();
sto.showX();
}
}