Rabu, Mei 22, 2019

Penggunaan final dengan Inheritance pada Java

prasyarat pengetahuan - Overriding pada Java, Inheritance pada Java

final adalah Keyword pada Java yang digunakan untuk membatasi beberapa fungsi. final dapat dideklarasikan dengan variabel, method, dan class.

Penggunaan final dengan inheritance
Selama proses inheritance, dapat dideklarasikan method dengan keyword yang mengharuskan implementasi yang sama pada seluruh subclass inheritance.

Output:
width of s1 : 10.0
height of s1 : 20.0
width of s2 : 10.0
height of s2 : 10.0
area of s1 : 200.0
area of s2 : 100.0

Penggunaan final untuk pencegahan inheritance
Ketika sebuah class dideklarasikan sebagai final kemudian tidak bisa dijadikan subclass yaitu tidak ada class lain yang bisa extend terhadap class tersebut. Hal ini sangat berguna, contohnya, ketika diciptakan immutable class seperti predefinisi class String. Fragmen berikut menggambarkan final keyword dengan class:

final class A
{
/* methods dan fields */
}
/* class berikut ini bersifat ilegal */
class B extends A 

/* ERROR! tidak dapat menjadi sub class A */
}

Catatan:
satu, Pendeklarasian sebuah class sebagai final secara implisit mendeklarasikan semua method sebagai final juga.
dua, Adalah ilegal mendeklarasikan sebuah class sebagai abstract dan final semenjak class abstract tidak lengkap oleh class itu sendiri, dan bergantung pada subclass-nya sendiri untuk menyediakan implementasi lengkap.

Penggunaan final untuk mencegah overriding
Ketika sebuah method dideklarasikan sebagai final, maka method tersebut tidak dapat overriding oleh subclass-nya. Fragmen berikut mengilustrasikan keyword final dengan sebuah method:

class A 
{
final void m1() 
{
System.out.println("This is a final method.");
}
}

class B extends A 
{
void m1()

/* ERROR! tidak dapat melakukan overriding */
System.out.println("Illegal!");
}
}

Secara normal, Java memanggil method secara dinamis pada saat waktu running. Hal ini dikenal dengan sebutan late atau dynamic binding. Namun, semenjak method final tidak bisa melakukan overriding, maka pemanggilan dilakukan pada saat waktu compile. Hal ini disebut dengan istilah early atau static binding.





Tidak ada komentar:

Posting Komentar

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

Footer Adsense