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();
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
class Point{ int x=2,y=3; void getArea() { int area = this.x*this.y; System.out.println(area); } }
class Point{ int x=2,y=3; void getArea(int x,int y) { int area = this.x*this.y; System.out.println(area); } }
getArea(4,5) Output : 6
getArea(4,5) Output : 4
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
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
class Shape extends Point{ int x=4,y=5; int getArea() { int area = super.x*super.y; return area; } }
class Shape extends Point{ int x=2; public int getArea() { int area = super.getX(); return area; } }
Output : 15
Polimorfisme
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
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: 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
Output :
Lingkaran berwarna Biru, luas = 314.0 Silinder berwarna Kuning, volume = 3768.0
Kelas Animal
Kelas Eagle
Kelas Frog
Kelas Fish
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]