Anda di halaman 1dari 38

Overloading Constructor

Suatu class dapat mempunyai lebih dari 1 constructor dengan syarat daftar parameternya tidak boleh ada yang sama.
public class Siswa { private int nrp; public Siswa() { nrp=0; } public Siswa(int n) { nrp=n; }

public static void main(String[] args){ //pemanggilan constructor pertama Siswa a = new Siswa();

//pemanggilan constructor kedua Siswa b = new Siswa("Ali");


}

Keyword this dan super


Selain menggunakan variabel reference, member class (variabel, method, dan constructor) dapat di-akses dengan menggunakan keyword this atau super. this digunakan untuk me-refer member class yang ada pada class itu sendiri. super digunakan untuk me-refer member class pada superclass.

Keyword this
Format penulisannya adalah sebagai berikut : this.attribut merujuk pada variabel/attribut class itu sendiri this.method() merujuk pada method atau fungsi class itu sendiri this() merujuk pada constructor class itu sendiri

Penggunaan this untuk akses variabel


Berapa nilai variabel area?? Output : 6

class Point{ int x=2,y=3; void getArea() { int area = this.x*this.y; System.out.println(area); } }

Penggunaan this untuk akses variabel

class Point{ int x=2,y=3; void getArea(int x,int y) { int area = this.x*this.y; System.out.println(area); } }

Akses instance variabel menggunakan this

getArea(4,5) Output : 6

Penggunaan this untuk akses variabel


class Point{ int x=2,y=3; void getArea(int x,int y) { int area = (x-this.x)*(y-this.y); System.out.println(area); } }

getArea(4,5) Output : 4

Penggunaan this untuk akses variabel


class Parent { public int x = 5; } class Child extends Parent { public int x = 10; public void Info(int x) {

System.out.println("Nilai x sebagai parameter = " + x); System.out.println("Data member x di class Child = " + this.x); System.out.println("Data member x di class Parent = " + super.x);
} } public class NilaiX { public static void main(String args[]) { Child tes = new Child(); tes.Info(20); } }

Hasil
Nilai x sebagai parameter = 20 Data member x di class Child = 10 Data member x di class Parent = 5

Kesimpulan
x merujuk pada x terdekat, yaitu parameter Info() this.x merujuk pada data member dari class-nya sendiri, yaitu data member pada class Child super.x merujuk pada data member dari parent class-nya, yaitu data member pada class Parent

Penggunaan this untuk akses method


Class Point2{ int x=5; int getX() { return x; } int getArea() { int area = 5*this.getX(); return area; } }

Berapa nilai variabel area?? Output : 25

Penggunaan this untuk akses constructor


class Point{ int x=2,y=3; Point(){ this(1); } Point(int x){ this.x = x; } int getArea() { int area = this.x*this.y; return area; } }

public static void main(String[] args) { Point p = new Point(); System.out.print(" " + p.getArea()); } }

Output : 3

Keyword super
Kata kunci super dipakai untuk merujuk pada member dari parent class. Sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari class itu sendiri. Format penulisannya adalah sebagai berikut :
super.data_member merujuk pada data member pada parent class super.function_member() merujuk pada function member pada parent class super() merujuk pada konstruktor pada parent class

Penggunaan super pada variabel


class Point{ int x=2,y=3; Point(){ this(1); } Point(int x){ this.x = x; } int getArea() { int area = this.x*this.y; return area; } }

class Shape extends Point{ int x=4,y=5; int getArea() { int area = super.x*super.y; return area; } }

Berapa nilai variabel area?? Output : 6

Penggunaan super pada Method


class Point{ int x=2,y=3; Point(){ this(1); } Point(int x){ this.x = x; } public int getX() { int area = this.x*this.y; return area; } }

class Shape extends Point{ int x=2; public int getArea() { int area = super.getX(); return area; } }

Berapa nilai variabel area?? Output : 3

this & super pada Constructor


this dan super dapat digunakan untuk memanggil construcor. Syaratnya : 1) Pemanggilan this atau super harus dilakukan didalam constructor. 2) statement this atau super tersebut harus diletakkan pada baris pertama.

Keyword super (pada constructor)


class Point{ int x=2,y=3; Point(){ this(1); } Point(int x){ this.x = x; } public int getX() { int area = this.x*this.y; return area; } } class Shape extends Point{ int x=2; public int getArea() { int area = super.getX(); return area; } public Shape(){ super(5); } public static void main(String[] args) { Shape a = new Shape(); System.out.println(a.getArea()); } }

Output : 15

Polimorfisme

Object Oriented Programming with JAVA 2011/2012

Definisi Polimorfisme
Adalah kemampuan sebuah variabel reference untuk memberikan respon yang berbeda thd message yang sama bergantung pada objek yang ditunjuknya. Polimorfisme melibatkan kelas-kelas yang berada pada hirarki pewarisan.

Deskripsi Polimorfisme
-Terdapat 3 objek : bebek, anjing, dan kucing - Ketiganya diberikan perintah yang sama : speak

- Ketiga objek memberikan respon yang berbeda untuk


perintah yang sama

Inilah POLIMORFISME

Polimorfisme
Tujuan: memungkinkan kita memberikan nama yang sama bagi segolongan aksi atau tugas yang mirip. Implementasi Polimorfisme :
Method overloading Method overriding dengan pewarisan Method overriding dengan interface Java

Polimorfisme: Overloading Fungsi


Overloading fungsi menyatakan kemampuan untuk mendefinisikan beberapa fungsi dengan nama yg sama dlm suatu kelas tertentu tetapi perlu diperhatikan signature fungsi tsb, yaitu: Berbeda dalam jumlah parameter
Berbeda dalam tipe ataupun posisi parameter

Polimorfisme: Overriding
Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass.
Subclass dapat membuat method yang fungsinya berbeda dengan method kepunyaan superclass dengan kesamaan pada: Nama Return type Argument list (jumlah, tipe, dan urutan)

Kelas Bentuk

Kelas Lingkaran

Kelas Silinder

Contoh Polimorfisme (1)

Output :
Lingkaran berwarna Biru, luas = 314.0 Silinder berwarna Kuning, volume = 3768.0

Kelas Animal

Kelas Eagle

Kelas Frog

Kelas Fish

Contoh Polimorfisme (2)

Dalam Java sebuah rujukan yg dideklarasikan untuk merujuk ke suatu objek dari sebuah kelas dapat juga digunakan untuk merujuk ke objek dari kelas lain yg dihubungkan ke kelas tersebut melalui suatu relasi pewarisan.

Interface
Interface di Java merupakan kumpulan konstanta dan fungsi abstrak. Fungsi abstrak adalah fungsi yang hanya memiliki header saja tanpa ada definisi fungsi (tidak memiliki badan fungsi) Interface dideklarasikan dengan sintaks:
public interface nama_interface { deklarasi konstanta deklarasi fungsi-fungsi abstrak }

Semua konstanta dan fungsi dalam interace memiliki visibilitas default public.

Interface
public interface ITampil { /* mencetak informasi yg dimiliki oleh suatu kelas*/ public void tampilInformasi(); }

Apabila suatu kelas mengimplementasikan suatu interface, maka dapat dikatakan bahwa kelas tersebut bertipe interface tersebut. Misalkan berikut ini, kelas Pegawai dan Mahasiswa mengimplementasikan interface ITampil, maka Pegawai dan Mahasiswa bertipe ITampil.
Itampil ref; Ref = new Pegawai(barca,Babarsari,517,1000000);

Kelas Abstract
Kelas yang tidak dapat diinstantiasi atau dengan kata lain objek kelas abstrak tidak dapat dibuat. Suatu kelas menjadi kelas abstrak apabila kelas tersebut paling tidak memiliki satu fungsi abstrak. Fungsi abstrak merupakan fungsi yang tidak memiliki definisi. Kelas abstrak hampir sama dengan interface, tetapi:
Kelas abstrak dapat memiliki fungsi non-abstrak (fungsi yang memiliki definisi) Kelas abstrak dapat memiliki deklarasi variabel

Kelas Abstract
Kelas abstrak dideklarasikan dengan sintaks:
abstract class nama_kelas { // deklarasi variabel public abstract nama_fungsi_abstrak (parameter) //deklarasi fungsi-fungsi lain }

Latihan 1
Bentuk

- warna : String + Bentuk (String warna) + getWarna() : String + setWarna(String warna) : void + printInfo() : void

BujurSangkar

- sisi : Integer
+ BujurSangkar (double sisi, String warna) + getSisi() : double + setSisi(double sisi) : void + hitungLuas() : double + printInfo() : void

Untuk kelas Bentuk : getWarna adl method yang akan mengembalikan nilai variabel warna setWarna adl method untuk mengubah nilai variabel warna printInfo adl method yang akan menuliskan Bentuk berwarna [warna] Untuk kelas BujurSangkar : getSisi adl method yang akan mengembalikan nilai variabel sisi setSisi adl method untuk mengubah nilai variabel sisi hitungLuas adl method yang akan mengembalikan hasil perhitungan luas bujursangkar printInfo adl method yang akan menuliskan Bujursangkar berwarna [warna], luas = [luas]

Latihan 2
Buatlah kelas Lingkaran sbg turunan kelas Bentuk.
Lingkaran - radius + Lingkaran(double radius, String warna) + getRadius() : double + setRadius(double r) : void + hitungLuas() : double + printInfo() : void
constructor akan menginisialisasi radius dan warna getRadius adl method yang akan mengembalikan nilai variabel radius setRadius adl method untuk mengubah nilai variabel radius hitungLuas adl method yang akan mengembalikan hasil perhitungan luas lingkaran (PHI jadikan sbg konstanta kelas) printInfo adl method yang akan menuliskan Lingkaran [warna], luas = [luas]

Anda mungkin juga menyukai