Kapan menggunakan Metode get/set di java

Saya ingin tahu kapan harus menggunakan metode get dan set (getName, setName) di kelas saya dan kapan sederhana classVariable.name = "" sebagai gantinya а = classVariable.getName()

Berikut adalah contoh kelas yang menggunakan metode set dan get

public class ClassExampe {

    String name;
    String course;

    public String getName ( )
    {
        return name;
    }

    public void setName (String studentName)
    {
        name = studentName;           
    }

    public String getCourse ( )
    {
        return course;
    }

    public void setCourse (String studentCourse)
    {
        course = studentCourse;
    }
}

Terima kasih

Aturan sederhananya adalah: jangan pernah menggunakan akses langsung (kecuali, tentu saja, ketika merujuk ke mereka dari dalam kelas).

  • akses field tidak bisa diproksi
  • Anda mungkin ingin memiliki beberapa notifikasi peristiwa
  • Anda mungkin ingin menjaga agar tidak terjadi race condition
  • bahasa ekspresi mendukung setter dan getter
  • secara teoritis ini melanggar enkapsulasi. (Jika kita bertele-tele, setter dan getter untuk semua field juga melanggar enkapsulasi)
  • Anda mungkin ingin melakukan beberapa logika tambahan di dalam setter atau getter, tetapi itu jarang disarankan, karena konsumen mengharapkan ini untuk mengikuti konvensi - yaitu menjadi getter/setter sederhana.
  • Anda dapat menentukan hanya setter atau hanya getter, sehingga mencapai akses read-only, atau write-only.

Bahkan jika hal ini tidak terjadi sehingga Anda membutuhkan salah satu dari ini, bukan tidak mungkin. Dan jika Anda memulai dengan akses field, akan lebih sulit untuk mengubahnya.

Komentar (1)

Di Java, menggunakan getter dan setter biasanya dianggap sebagai praktik terbaik.

Ini karena jika Anda perlu mengubah kode Anda untuk melakukan sesuatu yang lain ketika properti diakses atau dimodifikasi, Anda bisa mengubahnya di getter atau setter yang ada.

Saya cenderung berpikir bahwa hal ini menyebabkan sedikit kekacauan untuk objek-objek sederhana, tetapi jika Anda pernah harus merefaktor properti publik menjadi getter dan setter untuk menambahkan fungsionalitas tambahan, Anda akan melihat bahwa hal itu bisa sangat merepotkan.

Komentar (2)

Ini masalah selera, tetapi secara umum Anda harus selalu menggunakan metode get/set untuk semua properti yang bersifat publik. Tetapi untuk hal-hal seperti Value Objects (VOs) yang mungkin tidak akan Anda ganggu selama beberapa waktu, Anda dapat menggunakan variabel publik tanpa mendapatkan terlalu banyak kritik, saya pikir.

Komentar (2)