[ HTML ] [ Java ] [ Bahasa C ]


Rabu, April 24, 2019

Static Method vs Instance Method pada Java

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

public void geek(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 (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 paket yang sama atau paket lain tergantung pada jenis akses yang disediakan untuk metode instance yang diinginkan.

Point penting:
satu, Instance method adalah milik dari objek class tetapi tidak pada class yang akan dipanggil setelah diciptakan objek dari class.
dua, Setiap objek yang diciptakan dari class memiliki duplikat dari instance method dari 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 dalam Java yang dapat dipanggil tanpa menciptakan objek dari class. Method tersebut direferensikan oleh class name itu sendiri atau referensi untuk objek 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 objek dari class itu. Tetapi variabel lokal dan argumennya yang diterukan beserta argumen yang diterukan disimpan dalam stack karena merupakan bagian dari class sehinggga dapat dipanggil tanpa membuat objek dari class.

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 objek yang diciptakan dari class yang sama.
tiga, static method tidak bisa overriding. Tetapi bisa overloading ketika diselesaikan menggunakan static binding oleh compiler pada compile time.

// 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: static variabel dan nilainya (data primitif atau referensi) didefinisikan dalam class yang disimpan dalam ruang memori PermGen.

Bagaimana jika static variabel mengacu pada objek?

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 PermGen section dan objeknya mengacu untuk disimpan dalam heap section.

Kapan 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 objek dan static method tidak dapat digunakan keyword this, karena tidak ada contoh untuk 'this' untuk merujuk.

Tidak ada komentar:

Posting Komentar

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