Inhertirance, Encapsulation, Polymorphysm, Overloading, dan Overriding Inheritance Inheritance atau Pewarisan/Penurunan ad...
Inhertirance, Encapsulation, Polymorphysm, Overloading, dan Overriding
Inheritance
Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat ‘menurunkan’ property dan method yang dimilikinya kepada class lain. Konsep inheritance digunakan untuk memanfaatkan fitur ‘code reuse’ untuk menghindari duplikasi kode program.Konsep inheritance membuat sebuah struktur atau ‘hierarchy’ class dalam kode program. Class yang akan ‘diturunkan’ bisa disebut sebagai class induk (parent class), super class, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa disebut sebagai class anak (child class), sub class, derived class atauheir class.
Tidak semua property dan method dari class induk akan diturunkan. Property dan method dengan hak akses private, tidak akan diturunkan kepada class anak. Hanya property dan method dengan hak akses protected dan public saja yang bisa diakses dari class anak.
ISTILAH INHERITANCE
Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
Superclass Superclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
Subclass Subclass adalah class anak atau turunan secara hirarki dari superclass.
Super Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
Methode Overriding Pendefinisian ulang method yang sama pada subclass
Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived class atau subclass. misalkan sebagai berikut:Contoh :class Titikprivate integer xprivate integer yTitik()x < 0y < 0{end Titik}public getX() -> integer-> x{end getX}public getY() -> integer-> y{end getY}{end class}class Titik3D: Titikprivate integer zTitik3D()z <- 0{end Titik3D}public getZ() -> integer-> z{end getZ}{end class}
Titik3D p <- new Titik3D()integer x <- p.getX()integer y <- p.getY()integer z <- p.getZ()
Encapsulation
Encapsulation adalah pembungkus, encapsulation pada object oriented maksudnya adalah membungkus class dan menjaga apa apa saja yang ada didalam class tersebut, baik method ataupun atribut, agar tidak dapat di akses oleh class lainnya. Untuk menjaga hal tersebut dalam Encapsulation dikenal nama Hak Akses Modifier yang terdiri dari Private. Public dan Protected.- Private = memberikan hak akses hanya pada class itu sendiri, artinya apa-apa saja yang ada di dalam class A baik itu method ataupun atribut hanya bisa diakses oleh class A saja, class lain tidak bisa mengaksesnya.
- public = memberikan hak akses kepada atribut atau method agar bisa diakses oleh siapapun (property atau class lain diluar class yang bersangkutan), artinya method atau atribut yang ada diclass A dapat diakses oleh siapaun baik itu class A, class B dan seterusnya.
- protected = memberikan hak akses kepada class itu sendiri dan class hasil turunannya (inheritance), artinya apa apa saja yang ada diclass A hanya bisa diakses oleh class A sendiri dan class yang meng Extends class A. Namun harus dipahami class lain yang berada dalam satu package dengan class A mampu mengakses tipe data protected, Sedangkan yang tidak mampu mengakses adalah class-class yang berada diluar package class A. untuk dapat mengaksesnya, class yang berada diluar package class A harus meng extends class A.
Contoh Encapsulation:
class encapsulation:
public class Encapsulation {
private String nama;
private int nim;
public String getNama(){
return this.nama;
}
public void ModifNama(String nama){
this.nama=nama;
}
}
class main:
public class main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Encapsulation objek = new Encapsulation();
objek.ModifNama("Muksalmina");
System.out.println("Nama : "+objek.getNama());
}
}
Polymorphysm
Polymorphism adalah suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Contoh Program
- Simpan dengan nama CetakDataTipe.java
class CetakDataTipe {
// membuat method dengan nama sama tapi berbeda tipe data
public void CetakData(String Cetak) {
System.out.println(Cetak);
}
public void CetakData(int Cetak) {
System.out.println(Cetak);
}
public void CetakData(double Cetak) {
System.out.println(Cetak);
}
public void CetakData(char Cetak) {
System.out.println(Cetak);
}
}
public void CetakData(String Cetak) {
System.out.println(Cetak);
}
public void CetakData(int Cetak) {
System.out.println(Cetak);
}
public void CetakData(double Cetak) {
System.out.println(Cetak);
}
public void CetakData(char Cetak) {
System.out.println(Cetak);
}
}
- Simpan dengan nama Polymorphism.java
public class Polymorphism {
public static void main(String[] args) {
CetakDataTipe data = new CetakDataTipe();
CetakDataTipe data = new CetakDataTipe();
System.out.print("Cetak Data Tipe String : ");
data.CetakData("Sumatra");
data.CetakData("Sumatra");
System.out.print("Cetak Data Tipe Integer : ");
data.CetakData(1989);
data.CetakData(1989);
System.out.print("Cetak Data Tipe Double : ");
data.CetakData(16.5 / 2);
data.CetakData(16.5 / 2);
System.out.print("Cetak Data Tipe Char : ");
data.CetakData('N');
}
}
data.CetakData('N');
}
}
Overloading
Overloading merupakan suatu function yang memiliki parameter, dan function tersebut dapat memiliki nama function yang sama dengan yang lainnya dengan syarat jumlah parameter mesti berbeda atau bisa kita bilang situasi di mana beberapa rutin dalam sebuah program dapat mempunyai nama sama tetapi berbeda jenis parameter dan/atau jenis return value.
Contoh Overloading:
class overloading{
public void segitiga(){
int alas=5, tinggi=10;
System.out.println("Luas segitiga satu = "+(alas*tinggi)/2);
}
//Metod segitiga di overloading dengan 2 parameter (int x, int y)
public void segitiga2(int x, int y){
System.out.println("Luas segitiga dua = "+(x*y)/2);
}
public static void main(String [] args){
System.out.println("I Gede John Arissaputra");
System.out.println("1404505066");
System.out.println("Contoh Overloading");
System.out.println("");
overloading s3;
s3 = new overloading();
s3.segitiga();//memanggil metod segitiga
s3.segitiga2(20,8);//memanggil metod segitiga2
}
}
Overriding
Overriding merupakan suatu keadaan dimana kelas anak dapat mengubah atau bisa kita bilang memodifikasi atau memperluas data dan method pada kelas induk. Keuntungan Overriding : dapat menambahkan sifat / atribut pada kelas induknya. Lebih jelasnya Overloading secara singkat :
- Mendefinisikan method dengan nama sama pada class yang berbeda.
- Konsep dapat di manfaatkan dalam beberapa kasus inheritance, di mana menginginkan penamaan method dengan nama sama namun berbeda dalam impelementasinya
Contoh Overriding:
class Nama{
public void Sapa(){
System.out.println("Bill Gates");
}
public static void main(String [] args){
Siapa ss;
Nama nn;
ss = new Siapa();
nn = new Nama();
ss.Sapa();//memanggil method Sapa() pada class Siapa
nn.Sapa();//memanggil method Sapa() pada class Nama
}
}
class Siapa extends Nama{
//Method Sapa() pada class Nama di override
public void Sapa(){
System.out.println("Steve Jobs");
}
}