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.

Output:
GeeksforGeeks

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.

Output:
vaibhav
mohit

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

Footer Adsense