Saya hanya ingin menjernihkan pertanyaan yang saya miliki. Apa gunanya memiliki metode statis pribadi yang bertentangan dengan metode normal dengan visibilitas pribadi?
Saya akan berpikir keuntungan memiliki metode statis adalah bahwa ia dapat dipanggil tanpa turunan dari kelas, tetapi karena privasinya adakah yang menganggapnya statis?
Satu-satunya alasan yang dapat saya pikirkan adalah membantu secara konseptual memahami metode di tingkat kelas yang bertentangan dengan tingkat objek.
object-oriented
class
methods
static-methods
access-modifiers
Rehan Naqvi
sumber
sumber
Jawaban:
Karakteristik statis tidak tergantung pada visibilitas.
Alasan Anda ingin memiliki metode statis (beberapa kode yang tidak bergantung pada anggota non-statis) akan tetap berguna. Tapi mungkin Anda tidak ingin orang lain menggunakannya, hanya kelas Anda.
sumber
<
untuk<
, dll Ketika ada tertulis ...&
menjadi&
[jika saya menulis kode, saya akan mengonversi&
ke&
bahkan jika saya tidak mengharapkannya diperlukan, tetapi anggaplah tidak]. Hal itu kemudian menjadi perlu untuk menangani ampersands, tetapi metode ini umum, perubahan itu untuk memperluas&
untuk&
bisa memecahkan kode luar yang melakukan sendiri&
-to-&
substitusi. Namun, jika metode ini bersifat pribadi, bisa diperbaiki untuk ditangani&
tanpa menimbulkan masalah bagi kode luar.Alasan yang cukup umum (di Jawa) adalah untuk menginisialisasi variabel bidang yang tidak dapat diubah dalam sebuah konstruktor dengan menggunakan
private static
metode sederhana untuk mengurangi kekacauan konstruktor.private
: kelas eksternal seharusnya tidak melihatnya.static
: ia dapat melakukan beberapa operasi, 1 independen dari kelas host.Contoh yang agak dibuat-buat mengikuti ...
misalnya:
1 Dengan asumsi tidak ada interaksi dengan
static
variabel lain .sumber
super(...)
panggilan harus menjadi baris pertama Anda konstruktor kelas, sehingga Anda tidak dapat mendeklarasikan variabel lokal untuk membantu Anda bekerja apa untuk lolos ke panggilan super. Namun, Anda dapat memanggil metode statis (pribadi), yang menggunakan sebanyak mungkin garis untuk mengetahui nilai yang akan diteruskan ke konstruktor super.Kasus penggunaan umum untuk suatu
private static
metode adalah metode utilitassumber
Anda melihat bahwa Anda memiliki beberapa baris kode yang diulang dalam banyak metode Anda, jadi Anda memutuskan untuk mengekstraknya ke metode tunggal, karena kode duplikat tidak baik.
Anda menjadikan metode ini pribadi karena tidak dirancang untuk penggunaan luas dan Anda tidak ingin kode yang tidak terkait memanggilnya. (Debatkan poin ini di komentar ....)
Karena metode ini tidak mengakses bidang instance apa pun, itu bisa menjadi statis, dengan membuatnya statis Anda membuatnya lebih mudah untuk dipahami dan mungkin bahkan sedikit lebih cepat.
Lalu .... (Mungkin sekarang, mungkin nanti, mungkin tidak pernah)
Setelah metode dibuat statis, jelas bahwa itu dapat dipindahkan dari kelas, katakanlah ke kelas persatuan.
Juga mudah untuk mengubahnya menjadi metode instan dari salah satu parameternya, sering kali ini adalah tempat kode seharusnya.
sumber
Saya dapat memikirkan setidaknya dua alasan mengapa Anda memerlukan metode privat statis di kelas.
1: Mesin virtual Anda memiliki alasan untuk memanggil metode statis yang tidak ingin Anda panggil secara langsung, mungkin karena alat ini membagikan data di antara semua mesin virtual dari kelas Anda.
2: Metode statis publik Anda memiliki subrutin yang tidak ingin Anda panggil secara langsung. Metode ini masih dipanggil tanpa instance, hanya saja tidak secara langsung.
Tentu saja, "itu membantu kelas masuk akal" adalah alasan yang baik semua sendiri.
sumber
Secara umum, jika saya menemukan saya sedang menulis metode statis pribadi, saya menganggapnya sebagai indikasi bahwa ada sesuatu yang harus saya modelkan secara terpisah.
Karena mereka tidak terikat pada keadaan instance objek tertentu, kumpulan metode statis publik dan pribadi dapat membentuk kelas yang sepenuhnya terpisah dengan semantik sendiri & metode non-statis.
(Tip-off lain adalah jika saya menemukan saya memiliki banyak metode statis (publik dan pribadi) yang semuanya memiliki parameter umum dari beberapa jenis, mereka mungkin lebih baik sebagai anggota dari jenis itu.)
Jadi, untuk menjawab pertanyaan Anda, metode statis pribadi muncul ketika kelas menyediakan sekelompok metode terkait yang tidak bergantung pada turunan dari kelas itu. (... dan karena mereka mandiri, mereka mungkin lebih baik di kelas mereka sendiri.)
sumber
Contoh yang sangat sederhana yang dapat saya pikirkan adalah, jika Anda ingin melakukan pemrosesan pada argumen input (atau manipulasi) yang dilewatkan ke fungsi utama. Jadi dalam hal ini jika pemrosesan besar dan fungsionalitas yang sama tidak akan digunakan di tempat lain akan masuk akal untuk memiliki fungsi pribadi karena tidak akan digunakan / dipanggil dari tempat lain + statis karena utama adalah statis.
sumber