170 likes | 273 Views
Polymorphism (bag. 2). Overriding Method. Selain dapat membuat kelas dari kelas yang sudah ada dengan menambahkan fitur tambahan , dapat juga dimodifikasi perilaku kelas induk atau superclass .
E N D
Overriding Method Selaindapatmembuatkelasdarikelas yang sudahadadenganmenambahkanfiturtambahan, dapatjugadimodifikasiperilakukelasindukatausuperclass. Sebuahmethoddikatakanmeng-overridemethoddikelasinduknyajikadidalamsubclassdidefinisikanmethod yang memilikinama, tipekembalian, dandaftarargumen yang persissama. Contohberikutmenggambarkankonsepoverriding :
Secaradefinitif, kelasManagermempunyamethod yang bernamagetDetails()karenakelasManagermewarisinyadarikelas Employee. Tetapi, kelasManager memodofikasi (me-override) isidarimethodtersebut.
Adaaturan yang harusdiperhatikandalam me-overridemethoddarikelasindukseperti : • Daftarargumenpadamethodharussama (jumlahargumendantipenya) denganmethod yang di-override; • Tipekembalianmethodharussamadenganmethod yang di-override; • access specifier methodtidakbolehlebihketat (restrictive) daripada method yang di-override; • method yang meng-overridetidakdapatmelempar exception diluar exception yang dideklarasikanpadamethod yang di-override. Materitentang exception dibahaspadababselanjutnya.
PadacontohtentangkelasManager danEmployee diatas, dapatdibuatobyekManagerdandiisikankevariabelbertipeEmployee. Hal inidapatdilakukankarenakelasManager mewarisisemuaatributdanmethod darikelasinduknyadansetiapoperasi yang dilakukanolehobyekEmployeejugadapatdilakukanolehobyekManager.
Perhatikancontohberikut Employee employee = new Manager(); employee.name = “James”; employee.department = “marketing”; //illegal Melaluipenggunaanvariabelemployee ini, dapatdiaksesatributdan method yang merupakanbagiandarikelasEmployee (employee.name). Tetapiatributdanmethod yang menjadibagiandarikelasManager yaitu employee.departmenttidakdapatdiakses.
Virtual Method Invocation Method Invocation (VMI) bisaterjadijikaterjadipolimorfismedan Overriding. Padasaatobyek yang sudahdibuattersebutmemanggil overridden method pada parent class, kompiler Java akanmelakukan invocation (pemanggilan) terhadap Overriding method pada subclass, dimana yang seharusnyadipanggiladalah overridden method. Berikutcontohterjadinya VMI:
Hasildari running program diatasadalahsebagaiberikut: Nilai x = 5 Ini class Child Padakonsepini, method yang akandipanggilpadasaatruntimeakanditentukanberdasarkantipeaktualobyeknya.
Polymorphic Arguments Polymorphic arguments adalahtipesuatu parameter yang menerimasuatunilai yang bertipe subclass-nya. Berikutcontohdaripolymorphics arguments:
Pernyataaninstanceof Pernyataaninstanceofsangatbergunauntukmengetahuitipeasaldarisuatu polymorphic arguments. Untuklebihjelasnya, misalnyadaricontoh program sebelumnya, kitasedikitmembuatmodifikasipada class. Tesdanditambahsebuah class baruKurir, seperti yang tampakdibawahini:
Casting Object Seringdijumpaikeadaandimanasuatumethodmenerimavariabelreferensibertipekelasindukdan program inginmengidentifikasitipeobyek yang aktualnya. Hal inidapatdilakukandenganpenggunaanoperatorinstanceof. Setelahmenggunakanoperatortersebut, selanjutnyakode program dapatmengembalikansemuafungsionalitasobyekaktualnyaatausubclassdengan me-castingvariabelnya. Contohberikutmenggambarkankonsepcastingobyek :
public void doSomething(Employee e) { if(e instanceofManager) { Manager m = (Manager)e; System.out.println(“this is the manager of ” +m.getDepartment()); } //rest of operation }
Dalam contoh di atas, method menerima variabel referensi (e) bertipe Employee. Selanjutnya digunakan kata kunci instanceof untuk memastikan bahwa obyek yang dimiliki tersebut merupakan instance dari kelas Manager. Jika hal itu benar, variabel tersebut di-casting ke variabel bertipe Manager (m). Melalui penggunaan variabel bertipe Manager ini, dapat dipanggil method yang terdapat di kelas Manager, yaitu method getDepartment(). Jika tidak menggunakan casting, maka usaha untuk memanggil methode.getDepartment()akan gagal karena compiler tidak dapat menemukan method getDepartment()di dalam kelas Employee.