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

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

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

Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. dan tidak berlaku untuk field data. semua class.Dalam tiap kelas turunan dari kelas induk. 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.Sementara beberapa class di bawah class pokok dalam hirarki lass dikenal sebagai subclass dari class tersebut. Satu hal yang penting lainnya yang harus di ingat adalah polymorphism hanya berlaku untuk method. Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa 4 . Interface Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau constant). .Definisikan method ini dalam kelas induk sebagai method yang tidak melakukan apapun (hanya terdiridari „{„ dan „}‟ ). Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass. sifat ini secara otomatis diwariskan dari semua subclasses. adalah subclassesdari superclass Object. Jadi.. Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Contoh hirarki class diperlihatkan di bawah ini. termasuk class yang membangun Java API. Pewarisan Dalam Java.

Dengan catatan bahwainterface-interface juga menunjukkan polimorfisme. BAB II 5 . tanpa memperhatikan lokasinya dalam hirarki class. 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. untuk mengimplementasikan sifat-sifat yang umum.tubuh.Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class.

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

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

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

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

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

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

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

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

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

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

. kita tulis.println("Human walks. Human. }} Jika class Human tidak dapat overridde method walk. oleh karena itu tidak dapat di-instantiate. } Ketika class meng-extend class abstract LivingThing. dibutuhkan untuk override method abstract walk().* abstract method walk * Kita ingin method ini di-overridden oleh subclasses */ public abstract void walk().. juga subclass akan menjadi class abstract. kita akan menemui pesan error berikut ini. public interface [InterfaceName] { //beberapa method tanpa isi } 16 .out. public class Human extends LivingThing { public void walk(){ System. atau lainnya.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."). Contohnya.

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

tetapi ketika objek tersebut menunjuk kelas turunan objek tersebut berperilaku seperti kelas turunan .BAB III PENUTUP Polimorfisme erat kaitannya dengan pewarisan . 18 . Polimorfisme adalah pemikiran bahwa objek dinamis suatu kelas dasar dapat berperilaku seperti kelas turunan. Atau bahkan kelas turunan bisa mengubah atau mengganti perilaku kelas supernya. 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. objek tersebut berperilaku seperti kelas dasar .Dalam hal ini objek dapat memiliki beberapa bentuk . maka kita bisa juga menyebut kelas A adalah kelas super dari kelas B. Kelas turunan bisa memiliki struktur atau perilaku tambahan dari kelas supernya. Hubungan antara kelas turunan dan kelas super sering dilukiskan dalam bentuk diagram di mana kelas turunan digambarkan di bawah kelas supernya. bahwa perubahan perilaku ini dari kelas dasar kepada kelas turunan . Jika kelas B adalah kelas turunan dari kelas A. Istilah pewarisan berarti suatu kelas bisa mewariskan sebagian atau keseluruhan struktur dan perilaku kelas lain. Ketika objek tersebut menunjuk kelas dasar . Yang perlu menjadi catatan.

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

Sign up to vote on this title
UsefulNot useful