DAFTAR ISI

Halaman Judul ................................................................................................. 1 Kata Pengantar .................................................................................................. 2 Daftar Isi .......................................................................................................... 3 Bab I Pendahuluan ........................................................................................... 4 Bab II Pembahasan .......................................................................................... 6 Mendefinisikan Superclass dan Subclass ............................................. 6 Kata Kunci Super ................................................................................. 9 Overidding Method ............................................................................... 10 Method Final and class final ................................................................ 11 Polimorfisme ........................................................................................ 12 Abstract Class ...................................................................................... 14 Membuat Interface ................................................................................ 16 Bab III Penutup ................................................................................................ 18 Daftar Pustaka ................................................................................................... 19

1

Saya juga berterima kasih kepada teman-teman saya sehingga laporan ini dapat diselesaikan. perlu kiranya saya dengan ketulusan hati mengucapkan terima kasih kepada Asisten Dosen yang telah membimbing saya dalam menyelesaikan laporan ini. Sehubungan dengan hal tersebut. Bengkulu. sehingga Makalah Pemrograman Berorientasi Objek mengenai Polimorfisme telah dapat saya selesaikan. saya menyadari pengetahuan dan pengalaman saya masih sangat terbatas. Dalam penulisan makalah ini. Oleh karena itu. saya sangat mengharapkan adanya kritik dan saran dari berbagai pihak agar laporan ini lebih baik dan bermanfaaat. 02 April 2012 Juju Nurul Utami 2 . berbagai hambatan telah saya alami. Adapun penulisan tugas ini bertujuan untuk tugas teori Pemrograman Berorientasi Objek. Oleh karena itu. atas segala kebesaran dan limpahan nikmat yang diberikan-Nya. terselesaikannya makalah ini tentu saja bukan karena kemampuan saya semata-mata.KATA PENGANTAR Puji syukur saya panjatkan kehadirat Allah SWT. Dalam penyusunan laporan ini. Namun karena adanya dukungan dan bantuan dari pihak-pihak yang terkait.

Dengan kata lain. langkah – langkah untuk membuat polymorphism adalah : . jika pada class “Mobil” akan menghasilkan perpindahan 70Km dan jika dipanggil pada class “Pesawat” akan menghasilkan perpindahan 300Km. “Mobil” dan “Pesawat”. Hal inilah yang kita sebut sebagai Polimorfisme . Dimana ketiga class tersebut adalah turunan dari class “Kendaraan”.BAB I PENDAHULUAN Dalam pemrograman berorientasi object kita mengenal suatu istilah yaitu “ Polimorfisme ”.Atribut akses dari method di kelas turunan tidak boleh lebih terbatas 10 dari yang ada di kelas induk. Dimana jika method “Move()” dipanggil pada class “Motor” akan menghasilkan perpindahan 30Km. Sebagai contoh seumpama kita memiliki 3 class berbeda yaitu: “Motor”. Dalam kelas kedaraan terdapat suatu method yaitu “Move()”. .Method dari kelas tutunan yang akan dieksekusi.Tipe yang dikembalikan juga harus sama. dipanggil oleh objek dari kelas induk. yaitu penggunaan method yang sama.Deklarasi method yang akan di-polymorphism-kan dalam body kelas induk 3 .Method ini harus merupakan member dari kelas induk. yaitu suatu teknik dalam programming yang lebih mengarahkan kita untuk memprogram secara general dari pada secara spesifik. Untuk mendapatkan operasi polymorphism dari suatu method. . akan tetapi apakah method “Move()” akan memberikan hasil yang sama pada tiga class tersebut. Oleh karena itu. Anda harus mendefinisikan method yang akan dipanggil ini dalam kelas. . Beberapa syarat yang harus dipenuhi agar operasi polymorphism dapat berlangsung adalah : .Nama method di kelas induk harus sama dengan yang ada di kelas tutunan. yang akan menghasilkan suatu hasil yang berbeda tergantung class yang menggunakan method tersebut. method ini harus merupakan member dari kelas induk. .

termasuk class yang membangun Java API.Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. definisikan ulang method tadi dengan memastikan atribut aksesnya tidak lebih terbatas dari atributnya yang ada di kelas induk. Subclass hanya perlu mengimplementasikan perbedaannya sendiri dan induknya.. Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa 4 . Contoh hirarki class diperlihatkan di bawah ini. Pewarisan Dalam Java. Satu hal yang penting lainnya yang harus di ingat adalah polymorphism hanya berlaku untuk method. Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass.Definisikan method ini dalam kelas induk sebagai method yang tidak melakukan apapun (hanya terdiridari „{„ dan „}‟ ). semua class. .Dalam tiap kelas turunan dari kelas induk. Interface Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau constant). Jadi. adalah subclassesdari superclass Object. sifat ini secara otomatis diwariskan dari semua subclasses.Sementara beberapa class di bawah class pokok dalam hirarki lass dikenal sebagai subclass dari class tersebut. dan tidak berlaku untuk field data.

tanpa memperhatikan lokasinya dalam hirarki class. BAB II 5 . Dengan catatan bahwainterface-interface juga menunjukkan polimorfisme.tubuh. dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung daritipe object yang melewati pemanggil method interface. Mereka menyediakan class-class.Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. untuk mengimplementasikan sifat-sifat yang umum.

kita menggunakan kata kunci extend. this. protected String address /** * Default constructor */ public Person(){ System. Dimisalkan kita mempunyai class induk yang dinamakan Person.name = name. pewarisan dan interface  Mendefinisikan Superclass dan Subclass Untuk memperoleh suatu class. public class Person { protected String name.out. kita akan membuat contoh class induk. name = "".println(“Inside Person:Constructor”). Untuk mengilustrasikan ini. String address ){ this.PEMBAHASAN Pada pembahasan ini.address = address. } /** * Constructor dengan dua parameter */ public Person( String name. 6 . terdapat analisis kode pada beberapa program yang menggunakan polimorfisme . address = "".

} public void setName( String name ){ this. } } Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected.name = name. protected dan default dapat diakses oleh subclasses-nya. kita tulis.} /** * Method accessor */ public String getName(){ return name. Untuk melakukan ini. Karena Student juga sebagai Person. kita inginkan atribut-atribut ini untuk bisa diakses oleh subclassesdari superclassess. Jika kita mendeklarasikannya sebagai private. subclasses tidak dapat menggunakannya. sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada. } public void setAddress( String add ){ this. Alasannyakita melakukan ini yaitu. } public String getAddress(){ return address. public class Student extends Person 7 . kita putuskan hanya meng-extend class Person. Sekarang. kita ingin membuat class lain bernama Student. Catatan bahwa semua properti dari superclass yang dideklarasikan sebagai public.address = add.

kita membuat sebuah object dari class Student. //beberapa kode di sini } // beberapa kode di sini } Ketika object Student di-instantiate. } Dalam kode ini. Untuk mengilustrasikannya. pernyataan di dalam subclass dieksekusi. perhatikan kode berikut : public static void main( String[] args ){ Student anna = new Student().println(“Inside Student:Constructor”). Keluaran dari program adalah.out. Inside Person:Constructor Inside Student:Constructor 8 .{ public Student(){ System. default constructor dari superclass secara mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu.

public Student(){ super(). Kata Kunci Super Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. System. kita tunjukkan contoh dari pemanggil constructor super. } Kode ini memanggil constructor kedua dari superclass terdekat (yaitu Person) dan mengeksekusinya. Person dan Student. pada contoh class sebelumnya.println("Inside Student:Constructor"). System.out. 9 . public Student(){ super( "SomeName".out.Sebagai contoh. "SomeAddress" ). Hal ini dilakukan dengan pemanggil construktor super. Contoh kode lain ditunjukkan sebagai berikut. Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan.println("Inside Student:Constructor"). berdasar dari argumen sebelumnya. Diberikan kode berikut untuk Student.

} Kode ini memanggil default constructor dari superclass terdekat (yaitu Person) dan mengeksekusinya. public Student() { super. method overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut. 2. Oleh karena itulah. public class Person { 10 . Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI DALAM constructor YANG SAMA. }  Overriding Method Untuk beberapa pertimbangan.address = “some address”.name = “somename”. Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor. super. Pemakaian lain dari super adalah untuk menunjuk anggota dari superclass(seperti reference this). Pemanggil super() hanya dapat digunakan dalam definisi constructor. Sebagai contoh. terkadang class asal perlu mempunyai implementasiberbeda dari method yang khusus dari superclass tersebut. Misalnya kita mempunyai implementasi berikut untuk method getName dalam superclass Person. Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super: 1. 3.

juga memungkinkan untuk mendeklarasikan class-class yang tidak lama menjadi subclass. Sebagai contoh. method getName dalam subclass Student. } :} Jadi. methodoverriddeakan dipanggil.Student: getName  Method final dan class final Dalam Java. jika kita ingin class Person untuk dideklarasikan final. keluarannya akan menjadi. public class Student extends Person { : : public String getName(){ System. kita tulis. public final class Person { 11 . return name.out.println("Student: getName").out. Class ini dinamakan class final. return name.: : public String getName(){ System. kita tulis. ketika kita meminta method getName dari object class Student.println("Parent: getName"). } : } Untuk override. Untuk mendeklarasikan class untuk menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class.

public final String getName(){ return name. kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah object dari subclass tersebut. Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. dan String. Method inidapat kita panggil method final. kita tulis. kitatambahkan subclass lain dari Person yaitu Employee. Dalam Java.//area kode } Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak dapat di-override. } Method static juga secara otomatis final.  Polimorfisme Sekarang. Ini artinya Anda tidak dapat membuatnya override. Contoh-contoh dari class ini adalah Integer. Double. class induk Person dan subclass Student dari contoh sebelumnya. kita tambahkan kata kunci final ke dalam deklarasi method. jika kita ingin method getName dalam class Person untuk dideklarasikan final. Di bawah ini adalah hierarkinya. Sebagai contohnya. Untuk mendeklarasikan method untuk menjadi final. Contohnya. public static main( String[] args ) 12 .

return name. } } public class Employee extends Person { public String getName(){ 13 . dan kita override method ini dalam kedua subclasses Student dan Employee. public class Person { public String getName(){ System.println(“Student Name:” + name).out. Employee employeeObject = new Employee().println(“Person Name:” + name). Student studentObject = new Student(). } } public class Student extends Person { public String getName(){ System.out. ref = studentObject. return name.{ Person ref. //Person menunjuk kepada // object Student //beberapa kode di sini } Sekarang dimisalkan kita punya method getName dalam superclass Person kita.

} Kemampuan dari reference untuk mengubah sifat menurut object apa yang dijadikan acuan dinamakan polimorfisme.out. //getName dari Employee //class dipanggil System.println(“Employee Name:” + name).getName(). ref = studentObject. //getName dari Student //class dipanggil System. method getName dari Employee akan dipanggil. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal. Sekarang. secara otomatis menunjuk method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya. return name.out. Student studentObject = new Student().out. public static main( String[] args ) { Person ref. method getName dari object Student akan dipanggil.getName(). ref = employeeObject.  Abstract Class 14 .System. Employee employeeObject = new Employee(). //Person menunjuk kepada // object Employee String temp = ref.println( temp ). jika kita berikan ref ke object Employee. //Person menunjuk kepada // object Student String temp = ref. ketika kita mencoba memanggil method getName dari reference Person ref.println( temp ). } Kembali ke method utama kita.

println("Living Thing breathing.println("Living Thing eating. eat. sleep. Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Akan tetapi.Misalnya kita ingin membuat superclass yang mempunyai method tertentu yang berisiimplementasi.. itulah kenapa kita inginkan membuat superclass umum dalam hal ini. ada beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi.")."). public abstract class LivingThing { public void breath(){ System.out. method walk. kita akan membuat superclass bernama LivingThing. Sebagai contoh. Sekarang mari membuat contoh class abstract.. dan juga beberapa method yang akan di-overridden oleh subclasses nya. kita manusia berjalan dengan dua kaki.out.. } /** 15 . Ambil manusia sebagai misal. beberapa ciri umum dalam kehidupan sudah biasa. Akan tetapi. dimana kehidupan lainnya seperti anjing berjalan dengan empat kaki.. dan walk. class ini mempunyai method tertentu seperti breath. } public void eat(){ System. Kita ambil contoh.

kita akan menemui pesan error berikut ini. atau lainnya."). }} Jika class Human tidak dapat overridde method walk. dibutuhkan untuk override method abstract walk()..java:1: Human is not abstract and does not override abstract method walk() in LivingThing public class Human extends LivingThing ^ 1 error  Membuat Interface Untuk membuat interface.. kita tulis. public class Human extends LivingThing { public void walk(){ System. Human. Contohnya. juga subclass akan menjadi class abstract. public interface [InterfaceName] { //beberapa method tanpa isi } 16 . oleh karena itu tidak dapat di-instantiate. } Ketika class meng-extend class abstract LivingThing.* abstract method walk * Kita ingin method ini di-overridden oleh subclasses */ public abstract void walk().out.println("Human walks.

public boolean isLess( Object a. public boolean isEqual( Object a. Object b). mari kita membuat sebuah interface yang mendefinisikan hubungan antara dua object menurut urutan asli dari object. Object b).Sebagai contoh. Object b). public interface Relation { public boolean isGreater( Object a. } 17 .

bahwa perubahan perilaku ini dari kelas dasar kepada kelas turunan . Atau bahkan kelas turunan bisa mengubah atau mengganti perilaku kelas supernya. maka kita bisa juga menyebut kelas A adalah kelas super dari kelas B. Ketika objek tersebut menunjuk kelas dasar . Istilah pewarisan berarti suatu kelas bisa mewariskan sebagian atau keseluruhan struktur dan perilaku kelas lain. Polimorfisme adalah pemikiran bahwa objek dinamis suatu kelas dasar dapat berperilaku seperti kelas turunan. objek tersebut berperilaku seperti kelas dasar . dan dihubungkan dengan garis penghubung dengan tanda segitiga yang diletakkan di dekat kelas supernya. tidak dapat objek turunan menunjuk kelas dasar. tergantung pada saat itu kelas mana yang ditunjuk. tetapi ketika objek tersebut menunjuk kelas turunan objek tersebut berperilaku seperti kelas turunan . 18 . Hubungan antara kelas turunan dan kelas super sering dilukiskan dalam bentuk diagram di mana kelas turunan digambarkan di bawah kelas supernya. Kelas turunan bisa memiliki struktur atau perilaku tambahan dari kelas supernya.Dalam hal ini objek dapat memiliki beberapa bentuk . Yang perlu menjadi catatan. Jika kelas B adalah kelas turunan dari kelas A.BAB III PENUTUP Polimorfisme erat kaitannya dengan pewarisan .

com www.lyracc.wikipedia.google.scribd. 19 .com www.com .com www.DAFTAR PUSTAKA www.