• Tidak ada hasil yang ditemukan

Konstruktor dan Polimorfisme

N/A
N/A
Protected

Academic year: 2021

Membagikan "Konstruktor dan Polimorfisme"

Copied!
9
0
0

Teks penuh

(1)

Konstruktor dan Polimorfisme

Konstruktor

Konstruktor merupakan metode yang digunakan untuk memberi nilai awal

pada objek saat pertama kali objek tersebut dibuat. Konstruktor akan

otomatis dibuat saat kata kunci new dipanggil. Terdapat beberapa

karakteristik untuk penamaan konstruktor:

1. Nama konstruktor sama dengan nama kelas

2. Tidak menggunakan kata kunci void

3. Tidak dapat mengembalikan nilai

Berikt merupakan contoh kode untuk konstruktor:

Saat dieksekusi dan dijalankan kedua berkas ini akan menghasilkan:

//berkas : CarConstructor.java

public class CarConstructor {

//atribut

String color; int builtYear;

//konstruktor dengan dua parameter

public CarConstructor(String color, int builtYear){ this.color=color; this.builtYear=builtYear; } //metode void info(){ System.out.println("Color: " + color); System.out.println("Year: " + builtYear); } } //berkas : CarConstructorAction.java

public class CarConstructorAction{ public static void main(String[] args){

//membuat objek myCar dan yourCar dengan nilai awal yang di set dengan konstruktor

CarConstructor myCar = new CarConstructor("Merah", 2013); myCar.info();

CarConstructor yourCar = new CarConstructor("Biru", 1970); yourCar.info();

} }

C:\Program> javac CarConstructorAction.java

C:\Program> java CarConstructorAction

Color: Merah

Year: 2013

Color: Biru

Year: 1970

C:\Program >

(2)

Polimorfisme

Menurut kamus definisi polimorfisme yang mengacu pada prinsip dalam

biologi adalah di mana suatu organisme atau spesies dapat memiliki

berbagai bentuk atau tingkatan.

Prinsip ini juga dapat diterapkan untuk pemrograman berorientasi objek

secara khusus disini adalah bahasa Java. Dalam Java subclass dari kelas

dapat menentukan perilaku mereka sendiri yang unik dan namun dapat

berbagi beberapa fungsi yang sama dari super kelas. Pendek kata sebuah

objek dapat memiliki bentuk yang berbeda.

Implementasi dari konsep polimorfisme yaitu:

1. Overloading : Mengunakan satu nama untuk tiap-tiap metode dengan

parameter yang berbeda

2. Overriding: Terjadi ketika subkelas memiliki metode yang sama persis

dengan metode yang ada pada super kelasnya.

Polimorfisme - Overloading

Overloading terjadi ketika terdapat minimal dua metode dengan nama yang

sama tetapi memiliki jenis dan jumlah parameter yang berbeda. Hal ini

dapat terjadi jika dua metode itu terdapat dalam satu kelas atau keduanya

diwariskan, atau satu metode diwariskan dan satu metode dideklarasikan

dalam kelas itu sendiri.

Overloading Terhadap Konstruktor

 Merupakan suatu mekanisme untuk membuat berbagai macam

konstruktor pada satu kelas. Berikut merupakan contoh kode overloading

terhadap konstruktor yang terjadi dalam satu kelas yang sama:

(3)

Yang membedakan ketiga konstruktor diatas adalah jumlah dan tipe data

parameter.

Overloading Terhadap Metode

Selain dapat dilakukan pada konstruktor Overloading juga dapat dilakukan

terhadap metode non – konstruktor.

//berkas : Bicycle.java

public class Bicycle{ int speed; int gear;

//konstruktor dengan parameter speed dan gear

public Bicycle(int speed, int gear){

this.speed = speed; this.gear = gear; }

//konstructor dengan parameter gear

public Bicycle(int gear){

this.gear = gear; }

//konstructor tanpa parameter

public Bicycle(){ } //metode void info(){ System.out.println("Speed: " + this.speed); System.out.println("Gear: " + this.gear); } } //berkas : BicycleOverloading.java

public class BicycleOverloading{

public static void main(String[] args){

//menggunakan konstruktor dengan parameter speed dan gear

Bicycle myBike = new Bicycle(10, 1); myBike.info();

//menggunakan konstruktor dengan parameter gear

Bicycle yourBike = new Bicycle(1); yourBike.info();

//menggunakan konstruktor tanpa parameter

Bicycle nnBike = new Bicycle(); nnBike.info();

} }

(4)

Pada kode diatas terdapat tiga buah metode yang sama dengan jumlah

parameter yang sama akan tetapi berbeda tipe data saja, hal tersebut

merupakan salah satu bentuk overloading. Jika kedua kode diatas

dieksekusi maka akan mendapatkan hasil berikut:

//berkas : KelasKuadrat.java

public class KelasKuadrat{

//metode

public double kuadrat(double input){

return input*input; }

public int kuadrat(int input){

return input*input; }

public double kuadrat(String input){

double bilangan;

bilangan= Double.valueOf(input).doubleValue(); //mengubah nilai string

menjadi double

return bilangan*bilangan; }

}

//berkas : ObjekKuadrat.java

public class ObjekKuadrat {

public static void main(String[] args) {

KelasKuadrat pangkatDua = new KelasKuadrat(); System.out.println(pangkatDua.kuadrat(25.0)); System.out.println(pangkatDua.kuadrat(25));

System.out.println(pangkatDua.kuadrat("25")); }

}

C:\Program> javac ObjekKuadrat.java

C:\Program> java ObjekKuadrat

625.0

625

625.0

(5)

//berkas : KelasSiswa.java

public class KelasSiswa { // Atribut

String nama; String nim; // Metode

public void setData(String nama, String nim) { this.nama = nama;

this.nim = nim; }

public void setData(String nama) { this.nama = nama;

}

public void cetakData() {

System.out.println("Nim siswa = " + nim); System.out.println("Nama siswa = " + nama); }

}

//berkas : KegiatanSiswa.java

public class KegiatanSiswa extends KelasSiswa { // Atribut

String kegiatan; // Metode

public void setKegiatan(String kegiatan) { this.kegiatan = kegiatan;

}

public void cetakKegiatan() {

System.out.println("Kegiatan siswa = " + kegiatan); }

//Metode utama

public static void main(String[] args) {

KegiatanSiswa kSiswa1 = new KegiatanSiswa();

kSiswa1.setData("Boni Mangunjiwo","A11.2013.00001"); kSiswa1.setKegiatan("DNCC");

kSiswa1.cetakData(); kSiswa1.cetakKegiatan();

KegiatanSiswa kSiswa2 = new KegiatanSiswa(); kSiswa2.setData("Rubi Arjuna"); kSiswa2.setKegiatan("Basket"); kSiswa2.cetakData(); kSiswa2.cetakKegiatan(); } }

C:\Program> javac KegiatanSiswa.java

C:\Program> java KegiatanSiswa

Nim siswa = A11.2013.00001

Nama siswa = Boni Mangunjiwo

Kegiatan siswa = DNCC

Nim siswa = null

Nama siswa = Rubi Arjuna

Kegiatan siswa = Basket

C:\Program>

(6)

Polimorfisme – Overriding

Keuntungan dari melakukan overriding metode adalah ketika sebuah sub

kelas mewarisi metode dari super kelas, dan metode tersebut masih

terbatas penggunaannya, sub kelas dapat memodifikasi metode tersebut

ketika dibutuhkan. Ciri dari overriding adalah memiliki nama metode, tipe

metode, jumlah parameter, nama parameter, tipe parameter yang sama

dengan metode yang akan di overide. Perhatikan contoh kode berikut ini:

//berkas : KelasSiswa2.java

public class KelasSiswa2 { // Atribut

String nama; String nim; // Metode

public void setDataSiswa(String nama, String nim) { this.nama = nama;

this.nim = nim; }

public void cetakDataSiswa() {

System.out.println("Nim siswa = " + nim); System.out.println("Nama siswa = " + nama); }

}

//berkas : KegiatanSiswa2.java

public class KegiatanSiswa2 extends KelasSiswa2 { // Atribut

String kegiatan; // Metode

public void setDataSiswa(String nama, String nim, String kegiatan) { this.nama = nama;

this.nim = nim;

this.kegiatan = kegiatan; }

public void cetakDataKegitanSiswa () { System.out.println("Nim siswa = " + nim); System.out.println("Nama siswa = " + nama); System.out.println("Kegiatan siswa = " + kegiatan); }

//Metode utama

public static void main(String[] args) {

KegiatanSiswa2 kSiswa1 = new KegiatanSiswa2();

kSiswa1.setDataSiswa("Milka Susanti","A11.2013.00001","Paduan Suara"); kSiswa1. cetakDataKegitanSiswa();

KegiatanSiswa2 kSiswa2 = new KegiatanSiswa2();

kSiswa2.setDataSiswa("Putri Rahayu","A11.2013.00001"); kSiswa2.cetakDataSiswa();

} }

(7)

Jika kedua kode tersebut dieksekusi maka akan menghasilkan tampilan

seperti berikut:

Hidding

//berkas : SuperKelas.java

public class SuperKelas { public void metodeCetak() {

System.out.println("Di cetak di super kelas "); }

}

//berkas : SubKelas.java

public class SubKelas extends SuperKelas { // override metodeCetak in Superclass

public void metodeCetak() {

System.out.println("Di cetak di sub kelas "); }

public static void main(String[] args) { SubKelas s = new SubKelas(); s.metodeCetak();

} }

C:\Program> javac SubKelas.java

C:\Program> java SubKelas

Di cetak di sub kelas

C:\Program >

//berkas : Animal.java

public class Animal { //metode kelas

public static void testClassMethod() {

System.out.println("The class" + " method in Animal."); }

//metode instan

public void testInstanceMethod() {

System.out.println("The instance " + " method in Animal."); }

(8)

//berkas : Cat.java

public class Cat extends Animal {

//metode kelas Cat (sub kelas) memiliki kesamaan dengan metode kelas Animal (super // kelas) sehinga menyembunyikan metode kelas Animal (super kelas)

public static void testClassMethod() {

System.out.println("The class method" + " in Cat."); }

//metode instan

public void testInstanceMethod() {

System.out.println("The instance method" + " in Cat."); }

public static void main(String[] args) { Cat myCat = new Cat();

Animal myAnimal = myCat;

Animal.testClassMethod(); //memaggil metode kelas pada super kelas myAnimal.testInstanceMethod();

} }

C:\Program> javac Cat.java

C:\Program> java Cat

The class method in Animal.

The instance method in Cat.

C:\Program >

(9)

Sumber dan Referensi:

Dasar Pemrograman Java 2, Abdul kadir, hal 160-168

http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html

http://docs.oracle.com/javase/tutorial/java/IandI/override.html

Referensi

Dokumen terkait

Hasil penelitian yang dilakukan penulis juga dapat digunakan sebagai rekomendasi untuk pengawas sekolah bidang bimbingan dan konseling pada Dinas Kabupaten/ Kota

apabila yang bersangkutan mengundurkan diri dan masa penawarannya masih berlaku dengan alasan yang tidak dapat diterima secara obyektif oleh Panitia Pengadaan Alat

Ilmu filsafat memberikan sentuhan pemikiran yang mendorong manusia untuk berfikir secara kritis setiap kejadian sejarah yang kemudian menjabarkan bagaimana

ANALISIS HANDOFF JARINGAN UMTS DENGAN MODEL PENYISIPAN WLAN PADA PERBATASAN DUA BASE STATION UMTS.. Selama penulis menjalani pendidikan di kampus hingga diselesaikannya Tugas Akhir

Berdasarkan uraian tentang pengertian program ekstr- akurikuler di atas dapat penulis rumuskan apa yang dimaksud dengan program ekstrakurikuler pembelajaran PAI, yaitu: “Ke-

Pengaruh Motivasi Kerja Terhadap Kinerja Karyawan Serta Dampaknya Pada Kualitas Pelayanan Housekeeping Department Di Padma Hotel Bandung.. Universitas Pendidikan Indonesia

Hasil pengenalan wajah dengan menggunakan 2 kode fractal yang berbeda Salah satu dari penggunaan kode fractal pada gambar diatas merupakan kode fractal pada kelas yang sama

Oleh karena itu, kaum perempuan yang tergabung di dalam gerakan ekofeminisme merasa bertanggung jawab untuk melindungi “ibu” mereka dari potensi kerusakan akibat