Sabtu, Mei 15, 2021

Static Method vs Instance Method pada Java

Dalam artikel ini akan dipelajari Instance method dan Static method pada bahasa pemrograman Java yang akan dijelaskan sebagai berikut:

Instance method
Instance method adalah method yang membutuhkan object dari class-nya sendiri untuk diciptakan sebelum method tersebut dipanggil. Untuk memanggil method instance, maka harus diciptakan object dari class bersamaan class tersebut diciptakan.

public void coba(String name)
{/* code program yang akan dieksekusi... */}
/* Return type dapat berupa int, float, string, atau tipe data yang didefinisikan oleh user */

Alokasi memori: method disimpan dalam ruang generasi permanen dari heap, tetapi parameter atau argumen yang dilewatkannya, variabel lokal, dan nilai return dialokasikan dalam stack. Method tersebut dipanggil dalam class yang sama dimana class tersebut berada atau dari class yang berbeda yang didefinisikan baik dalam package yang sama ataupun berbeda bergantung pada jenis akses yang disediakan untuk method instance yang diinginkan.

Point penting:
  • satu, Instance method adalah milik dari object class tetapi tidak pada class yang akan dipanggil setelah diciptakan object dari class tersebut.
  • dua, Setiap object yang diciptakan dari class memiliki duplikat dari instance method  class.
  • tiga, Bisa dilakukan overriding ketika telah diselesaikan menggunakan dynamic binding pada saat runtime.

// Contoh ilustrasi akses dari

// instance method.

import java.io.*

 

class Foo

String name = ""

// Instance method dipanggil

// bersamaan dengan class yang

// sama atau dari class lain

// yang dedifinisikan dalam

// pakcage yang sama atau dari

// package yang berbeda.

public void geek(String name)

{this.name = name;} 

 

class GFG

public static void main (String[] args

{

// Ciptakan instance dari

// class.

Foo ob = new Foo(); 

  

// Memanggil instance method

// dalam class 'Foo'.

ob.geek("MakanNasiPadang"); 

System.out.println(ob.name);}

}

Output:
MakanNasiPadang

Static Method
Static method adalah method pada Java yang dapat dipanggil tanpa menciptakan object dari class. Method tersebut direferensikan oleh class name itu sendiri atau referensi untuk object dari class.

public static void geek(String name)
{/* code program yang akan dieksekusi... */}
/* harus memiliki static modifier dalam deklarasinya */
/* return tipe dapat berupa int, float, string, atau tipe data yang didefinisikan oleh user */

Alokasi memori: Disimpan pada ruang generasi permanen dari heap karena terkait dengan class, dimana lokasinya berada tidak menuju object class itu sendiri. Tetapi variabel lokal dan argumennya yang diterukan beserta argumen yang diteruskan, disimpan dalam stack karena merupakan bagian dari class sehinggga dapat dipanggil tanpa membuat object dari class tersebut.

Point penting: 
  • satu, Static method berasosiasi terhadap class yang dapat dipanggil tanpa menciptakan instance dari class. ClassName.methodName(args).
  • dua, Dirancang dengan tujuan untuk berbagi diantara semua object yang diciptakan dari class yang sama.
  • tiga, static method tidak bisa overriding. Tetapi bisa overloading ketika diselesaikan menggunakan static binding oleh kompilator pada waktu kompilasi program.

// Contoh ilustrasi akses

// static method dari class.

import java.io.*

 

class Geek

public static String geekName = ""

public static void geek(String name)

{geekName = name;} 

 

class GFG 

public static void main (String[] args){ 

// Mengakses static method

// geek() dan field oleh class

// name itu sendiri.

Geek.geek("elfan"); 

System.out.println(Geek.geekName); 

  

// Mengakses static method

// geek() dengan mengunakan

// objek referensi.

Geek obj = new Geek(); 

obj.geek("mauludi"); 

System.out.println(obj.geekName);} 

}

Output:
elfan
mauludi

Catatan: variabel static dan nilainya (data primitif atau referensi) didefinisikan dalam class yang disimpan dalam ruang memori PermGen.

Jika Static Variabel Mengacu pada Suatu Object

static int i = 1;
static Object obj = new Object();

Pada baris pertama, value 1 akan disimpan dalam section PermGen. Pada baris kedua, referensi obj dapat disimpan dalam section PermGen dan object-nya mengacu untuk disimpan dalam section heap.

Waktu Menggunakan Static Method
  • satu, Ketika memiliki code program yang dapat dibagi ke semua instance dari class yang sama, dan meletakkan porsi dari code program ke method static.
  • dua, Pada dasarnya digunakan untuk mengakses field static dari class.

Instance Method dan Static Method
  • satu, Instance method dapat mengakses instance method dan instance variabel secara langsung.
  • dua, Instance method dapat mengakses static variabel dan static method secara langsung.
  • tiga, Static method dapat mengakses variabel static dan method static secara langsung.
  • empat, Static method tidak dapat mengakses instance method dan instance variabel secara langsung. static method harus menggunakan referensi menuju object dan static method tidak dapat menggunakan keyword this, karena tidak ada contoh untuk 'this' untuk dirujuk.

5 komentar:

  1. Apa itu keyword static Java?

    BalasHapus
    Balasan
    1. Keyword static pada Java digunakan terutama pada bagian menejemen memori. Keyword static adalah milik class ketimbang milik instance class. Static juga dapat berupa variabel atau dikenal sebagai variabel class.

      Hapus
  2. Apa yang dimaksud dengan instance method Java?

    BalasHapus
    Balasan
    1. Variabel instance pada Java adalah variabel non-static yang ditentukan pada class diluar method, constructor, atau block apapun. Setiap object class memiliki salinan terpisah atau contoh variabel tersebut.

      Hapus
  3. Instance method pada Java pada dasarnya adalah method dari sebuah class. Dengan kata lain, non static method yang dideklarasikan dalam class adalah method instance. Method semacam ini membutuhkan object class-nya untuk dibuah sebelum dapat dipanggil oleh program. Untuk memanggil method instance, yang perlu dilakukan terlebih dahulu adalah membuat object class-nya.

    BalasHapus

Respon komentar 7 x 24 jam, so please be patient :D