Saya baru saja membaca teks yang diberikan kepada saya di buku teks saya dan saya tidak begitu yakin saya mengerti apa yang dikatakannya. Ini pada dasarnya memberi tahu saya bahwa metode statis atau metode kelas menyertakan kata kunci "pengubah" statis. Tapi saya tidak tahu apa artinya itu?
Bisakah seseorang menjelaskan kepada saya dengan istilah yang sangat sederhana apa itu Metode Statis atau Kelas?
Selain itu, dapatkah saya mendapatkan penjelasan sederhana tentang apa itu metode Instance?
Inilah yang mereka berikan kepada saya di buku teks:
Ada implikasi praktis yang penting dari ada atau tidaknya pengubah statis. Metode kelas publik dapat dipanggil dan dijalankan segera setelah Java memproses definisi kelas tempat ia berada. Ini bukan kasus untuk metode contoh. Sebelum metode instance publik dapat dipanggil dan dijalankan, sebuah instance harus dibuat dari kelas tempatnya berada. Untuk menggunakan metode kelas publik, Anda hanya memerlukan kelas tersebut. Di sisi lain, sebelum Anda dapat menggunakan metode instance publik, Anda harus memiliki instance kelas.
Cara di mana metode statis dipanggil dalam definisi metode lain bervariasi sesuai dengan apakah kedua metode tersebut termasuk dalam kelas yang sama atau tidak. Dalam contoh di atas, faktorial dan utama adalah metode kelas MainClass. Akibatnya, pemanggilan faktorial dalam definisi main hanya merujuk nama metode, "faktorial".
sumber
static
(kelas, metode, atau bidang) tidak benar-benar milik apa pun, ia hanya berkumpul di kelas untuk tujuan organisasi.Metode dan variabel yang tidak dideklarasikan sebagai statis dikenal sebagai metode instance dan variabel instance. Untuk merujuk ke metode dan variabel instance, Anda harus membuat instance kelas terlebih dahulu berarti Anda harus membuat objek kelas itu terlebih dahulu.Untuk statis Anda tidak perlu membuat instance kelas, Anda dapat mengakses metode dan variabel dengan nama kelas menggunakan tanda titik yang ada di (.)
sebagai contoh:
Person.staticMethod(); //accessing static method.
untuk metode non-statis Anda harus membuat instance kelas.
Person person1 = new Person(); //instantiating person1.nonStaticMethod(); //accessing non-static method.
sumber
Metode statis, variabel milik seluruh kelas, bukan hanya contoh objek. Sebuah metode statis, variabel dikaitkan dengan kelas secara keseluruhan daripada dengan contoh kelas tertentu. Setiap objek akan berbagi salinan umum dari metode statis, variabel. Hanya ada satu salinan per kelas, tidak peduli berapa banyak objek yang dibuat darinya.
sumber
Perbedaan antara metode Statis dan metode Instance
Metode Instance adalah metode yang membutuhkan objek dari kelasnya untuk dibuat sebelum dapat dipanggil. Metode statis adalah metode di Java yang bisa dipanggil tanpa membuat objek kelas.
Metode statis dideklarasikan dengan kata kunci statis. Metode contoh tidak dengan kata kunci statis.
Metode statis artinya yang akan ada sebagai salinan tunggal untuk kelas. Tetapi metode instance ada sebagai beberapa salinan tergantung pada jumlah instance yang dibuat untuk kelas itu.
Metode statis dapat dipanggil dengan menggunakan referensi kelas. Instance atau metode non-statis dipanggil dengan menggunakan referensi objek.
Metode statis tidak dapat mengakses metode instance dan variabel instance secara langsung. Metode Instance dapat mengakses variabel statis dan metode statis secara langsung.
Referensi: geeksforgeeks
sumber
Metode instance => dipanggil pada instance tertentu dari kelas tertentu. Metode ingin mengetahui pada kelas mana ia dipanggil. Cara itu terjadi ada parameter tak terlihat yang disebut 'ini'. Di dalam 'ini' kami memiliki anggota kelas instance yang sudah disetel dengan nilai. 'Ini' bukan variabel. Ini adalah nilai, Anda tidak dapat mengubahnya dan nilainya adalah referensi ke penerima panggilan. Contoh: Anda memanggil tukang (metode contoh) untuk memperbaiki TV Anda (program aktual). Dia datang dengan alat (parameter 'ini'). Dia datang dengan alat khusus yang dibutuhkan untuk memperbaiki TV dan dia juga dapat memperbaiki hal-hal lain.
Dalam metode statis => tidak ada yang namanya 'ini'. Contoh: Tukang yang sama (metode statis). Ketika Anda memanggilnya, Anda harus menentukan tukang yang harus dihubungi (seperti tukang listrik). Dan dia akan datang dan memperbaiki TV Anda saja. Tetapi, dia tidak memiliki alat untuk memperbaiki hal-hal lain (tidak ada parameter 'ini').
Metode statis biasanya berguna untuk operasi yang tidak memerlukan data apa pun dari instance kelas (dari 'this') dan dapat melakukan tujuan yang dimaksudkan hanya dengan menggunakan argumennya.
sumber
Perilaku suatu objek bergantung pada variabel dan metode kelas itu. Saat kami membuat kelas, kami membuat objek untuknya. Untuk metode statis, kami tidak memerlukannya karena metode statis berarti semua objek akan memiliki salinan yang sama sehingga tidak diperlukan objek. misalnya:
Dalam metode instance setiap objek akan memiliki perilaku yang berbeda sehingga mereka harus memanggil metode tersebut menggunakan instance objek. misalnya:
Myclass x = new Myclass(); x.get();
sumber
Jika status suatu metode tidak seharusnya diubah atau tidak akan menggunakan variabel instan apa pun.
Anda ingin memanggil metode tanpa contoh.
Jika hanya berfungsi pada argumen yang diberikan padanya.
Fungsi utilitas adalah contoh yang baik dari metode statis. yaitu math.pow (), fungsi ini tidak akan mengubah status untuk nilai yang berbeda. Jadi itu statis.
sumber
Singkatnya, metode statis dan variabel statis adalah level kelas dimana metode instance dan variabel instance adalah level instance atau objek.
Ini berarti setiap kali sebuah instance atau objek (menggunakan new ClassName ()) dibuat, objek ini akan mempertahankan salinan variabel instace-nya sendiri. Jika Anda memiliki lima objek berbeda dari kelas yang sama, Anda akan memiliki lima salinan berbeda dari variabel instan. Tetapi variabel dan metode statis akan sama untuk kelima objek tersebut. Jika Anda membutuhkan sesuatu yang umum untuk digunakan oleh setiap objek yang dibuat, buatlah itu statis. Jika Anda memerlukan metode yang tidak memerlukan data spesifik objek untuk bekerja, buatlah itu statis. Metode statis hanya akan bekerja dengan variabel statis atau akan mengembalikan data berdasarkan argumen yang diteruskan.
class A { int a; int b; public void setParameters(int a, int b){ this.a = a; this.b = b; } public int add(){ return this.a + this.b; } public static returnSum(int s1, int s2){ return (s1 + s2); } }
Dalam contoh di atas, saat Anda memanggil add () sebagai:
A objA = new A(); objA.setParameters(1,2); //since it is instance method, call it using object objA.add(); // returns 3 B objB = new B(); objB.setParameters(3,2); objB.add(); // returns 5 //calling static method // since it is a class level method, you can call it using class itself A.returnSum(4,6); //returns 10 class B{ int s=8; int t = 8; public addition(int s,int t){ A.returnSum(s,t);//returns 16 } }
Di kelas pertama, add () akan mengembalikan jumlah data yang diteruskan oleh objek tertentu. Tetapi metode statis dapat digunakan untuk mendapatkan jumlah dari kelas apa pun yang tidak independen jika ada instance atau objek tertentu. Oleh karena itu, untuk metode umum yang hanya membutuhkan argumen untuk bekerja dapat dibuat statis agar semuanya KERING.
sumber
Metode Instance vs Metode Statis
Metode instance dapat mengakses metode instance dan variabel instance secara langsung.
Metode Instance dapat mengakses variabel statis dan metode statis secara langsung.
Metode statis dapat mengakses variabel statis dan metode statis secara langsung.
Metode statis tidak dapat mengakses metode instance dan variabel instance secara langsung. Mereka harus menggunakan referensi ke objek. Dan metode statis tidak dapat menggunakan kata kunci ini karena tidak ada contoh untuk 'ini' untuk merujuk.
sumber
Pengubah statis saat ditempatkan di depan suatu fungsi menyiratkan bahwa hanya ada satu salinan fungsi itu. Jika pengubah statis tidak ditempatkan di depan fungsi maka dengan setiap objek atau instance dari kelas itu salinan baru dari fungsi itu dibuat. :) Sama halnya dengan variabel.
sumber