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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful