300 likes | 481 Views
Abstract Class & Interface. Viska Mutiawani , M.Sc. Konsep Penting. Abstract class Abstract method Interface Implements Final Static Exception. Contoh Polimorfisme. Lihat contoh program yang disediakan pada polimorfisme. Method getArea () pada Shape. Apa yang terjadi jika :
E N D
Abstract Class & Interface ViskaMutiawani, M.Sc
KonsepPenting • Abstract class • Abstract method • Interface • Implements • Final • Static • Exception
ContohPolimorfisme • Lihatcontoh program yang disediakanpadapolimorfisme.
Method getArea() pada Shape • Apa yang terjadijika: public class TestShape { public static void main(String[] args) { // Constructing a Shape instance poses problem! Shape s3 = new Shape("green"); System.out.println(s3); System.out.println("Area is " + s3.getArea()); } } Method getArea() akanbermasalahjikashapenyabelumdiketahuibentukapa. Untukmengatasimasalahini, kitabuat method getArea() sebagai abstract. abstract public double getArea();
Abstract Class • Padapewarisan, jika super-kelasmempunyai method yang harusdi override oleh sub-kelasnya, maka class dan method tersebutkitabuatsebagai abstract.
Abstract Class • Sebagaicontoh, kitaakanmembuatsuperclassbernamaMakhlukHidup. Class inimempunyai method tertentusepertibernapas, makan, tidur, danberjalan. Akantetapi, adabeberapa method didalamsuperclass yang sifatnyatidakdapatdigeneralisasi. Kita ambilcontoh, method berjalan. • Tidaksemuamakhlukhidupberjalandalamcara yang sama. Kita manusiaberjalandengandua kaki, dimanakehidupanlainnyasepertianjingberjalandenganempat kaki.
MakhlukHidup Manusia Hewan Anjing Ayam
Abstract Method • Diawalidengankata abstract. • Tidakadaimplementasi. • Langsungdiakhirioleh semicolon (;). • Bertujuan agar di sub-kelasnyadi override. • Contoh:
Abstract Class • Diawalidengankata abstract. • Tidakdapatdi instantiate. • Namun sub-tipetetapberlakusehinggapolimorfismetetapberlaku. • Hanya abstract class yang dapatmemiliki abstract method. • Abstract class dapatjugamempunyai method yang tidak abstract. • Abstract class memaksa sub-kelasutk override abstract method. Jikatidak, maka sub-kelasharusjugabertipe abstract.
Abstract Class • Jika sub-kelastidakmeng-override abstract method, pastiakanmuncul error, contoh:
Contoh • Contoh class pd Java API.
Catatan • Method abstract tidakdapatdideklarasifinal. Kenapa? • Method abstract tidakdapatdibuatdenganaksesprivate. Kenapa?
Interface • Interface: carastandardalammenetapkansifat-sifatumumdari class. • Interface jugabersifatpolimorfisme. • Interface digunakanuntukmengatasikemiripan-kemiripanpadakelas yang tidakberhubungan.
Interface • Anggaplahada class GarisdanBilanganBulat. Keduakelasmempunyaiperlakuanuntukmembandingkan 2 buah object garisatau 2 buah object bilanganbulat. • Karenakemiripannya, kitadapatmembuatsuatu interface Pembanding yang berisi method signature (tanpaimplementasi) berkaitandenganperbandingan 2 objek.
Interface • Diawalidengankatakunciinterface, bukan class. • Method pada interface adalah abstract karenatidakmemerlukanimplementasi. (namuntanpa keyword abstract) • Interface tidakmengandung method constructor. • Semua method beraksespublic. Katakunci public tidakharusdideklarasikan. • Field secaraotomatismenjadi public static final.
Contoh • Contoh pd Java API. Interface ActionListener
Final • Katakunci final jikadigunakanpada method maka method tersebuttidakdapatdi override. • Contohpada class String.
Static • Jika method dideklarasi static, pemanggilan method diluardarikelasharusmemasukkannamakelasnyajuga. • Contoh:
Exception • Exception: pengecualian • Exception: suatuperistiwa yang munculsewaktueksekusi program, yang mengganggujalannyainstruksinormalpada program. • Cara handle: • Blok try-catch-finally • Throws exception pada class
Contoh program ygdapatmenimbulkan Exception • Jikapada class BilanganBulat pd project garis-bulatkitatambahkan method bagi, sepertiini: public double bagi(int y) { double z = 0; z = x / y; return z; } • Makaakandapatmenghasilkan exception jikanilai y yang dimasukkanadalah 0.
Cara antisipasi exception • Buatblok try-catch: public double bagi(int y) { double z = 0; try{ z = x / y; } catch (Exception e){ System.out.println("Masukkannilai y yang bukan 0"); } return z; }