04 inheritance

28
Object Oriented Programming (OOP) --Inheritance- Saniati [email protected] STMIK Teknokrat, Bandar Lampung

Upload: chaendrae-saputra

Post on 08-Jan-2017

100 views

Category:

Internet


0 download

TRANSCRIPT

Slide 1

Object Oriented Programming (OOP)[email protected] Teknokrat, Bandar Lampung

[email protected]/17/2016Karakteristik OOP Inheritance PolimorphismeInheritance Membuat class baru yang merupakan turunan dari existing class Class baru tersebut akan mewarisi semua field dan method yang ada di kelasnya. Untuk membuat sebuah kelas (subclass/child class) menjadi turunan kelas lain(super class/parent class), digunakan kata kunci extendspublic static SubClass extends ParentClass { }

public class Main {public static void main(String[1 argsi {Pesawat boeing = new Pesawatf);PesawatTempur fl6 = new PesawatTempurm;boeine .terbangi');fl6.mendarat//boeing.manuver()jf 16. manuverERR3RPesawatTempur extends PesawatF16 merupakan objectsubclass(PesawatTempur), sehingga memilikisemua method parentclass(Pesawat) ditambahmilik sendiri.

OverridingMengijinkan subclass mendefinisikan ulang method yang dimiliki parentclassnya.

Method terbang() yang di eksekusi adalah milik sendiri (subclass)

[email protected]/17/2016

[email protected]/17/2016

Jika ingin membuat object dari sebuah subclass, yang terjadi yaitu: Jvm akan membuat object dari parent class terlebih dahulu Setelah itu jvm baru akan membuat object dari subclass

public class PesaivatTempur extends Pesawat { int rudal = 4j PesawatTeimpur(){System, out. println ( "obj ect pesawat TEMPUR dibuat,,.1'); }/\Object superclass/ parentclassakan buat terlebih dahulu, laluobject subclass/childclassVpublic class Main {

object pesaivat dibuat... object pesaivat TEMPUR dibuat. , .public static void main(String[] args) {PesawatTempur fl6 = new PesawatTempur();} '

Super(); Pada kasus sebelumnya: object subclass dibuat oleh programmer, sedangkan object superclass dibuatkan oleh JVM dengan syarat constructor tanpa parameter jika ingin menggunakan parameter, maka pada constructor subclass didefinisikan pemanggilan constructor superclass dengan keyword super Super untuk memanggil constructor parent class, syarat: Harus dibaris paling atas Hanya boleh satu kali Hanya boleh dilakukan dari constructor subclass

InheritancepublicclassTiga{

public staticvoid main(String[] args) {

Satusa =new Satu();

}

1

Object Parameter

Parameter bukan variabel

primitif, melainkan user defined (object)

Javap Namaclass Jika ingin mengetahui, sebuah class memiliki method apa saja, dapat digunakan perintah javap namaclassE:\pelatihan>jauap Mobil Compiled from "Mobil.jaua" public class Mobil < int mesin; int roda; int bod^;MobilO;MobiKint, int, int>;MobiKint, int, int, jaua. lang.String} ; void majuO; void mundurO; void belokO;

KasusJika ingin memiliki fungsi test () untuk banyak binatang,maka harus didefinisikan banyak fungsi test. Bagaimana agarcukup satu fungsi untuk semua nya?

IS-A Buatlah kelas yang memiliki sifat umum (generik) yang mewakili kelas-kelas lainnya, lalu jadikan superclass bagi sub-subclass. Karena tiap subclass IS-A superclass

Parameter merujuk pada Object yang lebih generik, sehingga semua turunan Binatang (Gajah, Kerbau) dapat dimasukkan ke dalam parameterPolymorphism

//compile time binding//early bindingPolymorphisme

POLY banyak MORP bentukstatic void testrKerbau x){x.makanf);x.tidurf);

//late binding //run time binding static void testiEinatang x){x.makan();x.tidurQ;Object bisa berubah-ubah bentukRTTI = Run Time Type Identification = tipe data diidentifikasi ketika program runningLATE BINDING = sebuah object akan di bind ke sebuah method ketika runtime (bukan ketika compile)

Polymorphisme Deklarasi Superclass namaobject = new SubClass()lebih sering diimplementasikan. Hal tersebut memudahkan dalam melakukan koleksi objectpublic class BonBin {static void test(Binatang x){ x,makan(); x.tidur()i}pnh"l n r ctsti r uni rl mainKtrin sU. - "f ) {Binatang[] bin = {new Gajah(), new Kerbau()};test(bin[ti]) , test(bin[l]};} ' ' '1Koleksi (array)Casting Object

Error, karena object g hanya dapat mengaksesatribut dan method dari Binatangpublic class Gajah extends Binatang{ void makan(){System.out.printlnf'Gajah Makan..;}void tidur(){System, out. printing "Gajah Tidur...);}void duduk(){System, out. printlnf'Gajah Duduk. . .);}}public class Binatang { void imakan(){System,out.println("Makan }'void tidur(){

Object g dicasting sehingga dapat mengaksessemua atribut dan method dari Gajah11/17/2016System,out.println("Tidur }'

Abstract Abstract class merupakan class yang hanya mendeklarasikan methodnya, tanpa implementasi isi. Abstract class minimal memiliki satu abstract method Baik class maupun method harus ditambahkan keyword abstract Konsekuensi abstract class, tidak dapat dicreate objectnya, tapi yang mengimplementasikannya bisa. Keuntungannya, lebih simpel dan hemat memori(tidak dibuatkan objectnya oleh jvm).

[email protected]

[email protected]/17/2016

labstractclass Binatang {abstractabstractvoid makan()i void tidur()ipublic class Gajah extends Binatarig{ void makanQ{System, out ,println(''Gajah Makan...); }''void tidur(){System, out ,println(''Gajah Tidur. . .); }''}public class Kerbau extends Binatang{ void makan(){System,out, println("Gajah Makan }'void tidur(){System,out. println( "Gajah Tidur }'public class BonBin {static void test(Binatang x){K.makan();K.tidur();}public static void main(String[] args) { Binatang g = new Gajah();Binatang k = new Kerbau(); test(g); test(k);Abstract Class (2)

Boleh mengandungmethod yang tidakabstractpublic class BonBin {static void test(Binatang x){K,makan(); k.tidur()i}public static void main(String[] args) { Binatang g = new Gajah();Binatang k = new Kerbau();test(g);test(k)iAbstract Class (3)

Abstract Class (4)

Tidak implement method makan(), maka wajib menjadi abstract classJika subclass dari class abstract tidak mengimplementasikan method abstract, maka subclass wajib menjadi kelas abstract juga, sehingga tidak bisa dibuat objeknya

Interface Cara menghasilkan efek polimorphisme Extends dari class biasa Extend dari abstract class Implement sebuah interface Interface: Mirip seperti abstract class, tapi semua method HARUS abstract Class yang mengimplement menggunakan keyword implement bukan extends Class yang mengimplement HARUS mengimplement SEMUA method yang dideklarasikan dalam interface dan HARUS diberi label public Sebuah class BISA mengimplement lebih dari satu interface

[email protected]/17/2016

[email protected]/17/2016

Interface (2)Interface, seluruh method akan bersifat abstract, baik ditulis maupun tidakClass yang ingin memiliki sifat interface, harus implements dan semua method yang method harus public

Reference Pemaparan materi TOT Java Fundamental oleh bapakTri Haryoko (7-11 Nopember 2016, Bandar Lampung) https://docs.oracle.com/javase/tutorial/java Thinking in Java, Bruce Eckel