Post on 24-Oct-2015
description
Inheritance (Pewarisan)
Pemrograman Berorientasi Objek
Pengertian Inheritance
Proses pewarisan data dan method dari suatu kelas kepada kelas yang lain
Class yg mewariskan SuperclassClass yg diwariskan Subclass
Keyword Extends
bentuk umum pada Java :<hak akses> class <subclass> extends <superclass>
Contoh :public class mobil extends KendaraanBermotor
bentuk umum pada C++ :class <subclass> : <hak akses> <superclass>contoh :class mobil : public kendaraan_bermotor
Keyword Superuntuk memanggil konstruktor dan method oleh subclass yang dimiliki oleh superclass
• Bentuk umum untuk memanggil konstruktor :super ()super(parameter)
• Bentuk umum untuk memanggil method :super.method(parameter)
Jenis-Jenis Inheritance
Single Inheritance (Pewarisan Tunggal)
Multiple Inheritance (Pewarisan Jamak)
Virtual Multiple Inheritance (Pewarisan Jamak Maya)
Single Inheritance (Pewarisan Tunggal)
Adalah pewarisan yang jumlah kelas dasarnya (basic class / superclass) tunggal, tapi kelas turunan (subclass) bisa lebih dari satu
Konsep inheritance yang ada di Java hanya memperkenankan adanya single inheritance.
Single Inheritance (Pewarisan Tunggal)
Class A
Class B
Class C
Syntax Single Inheritance
C++ JAVA
class A
{
. . .
};
class B : public A
{
. . .
}
class A{ . . .}; Public class B extends A
{ . . .}
Contoh Single Inheritance ( Java )
public class Komputer {
String Processor; int Monitor; int HardDisk; int Memory;
public int getHardDisk() { return HardDisk; } public void setHardDisk(int
HardDisk) { this.HardDisk = HardDisk; } public int getMemory() { return Memory; }
public void setMemory(int Memory) {
this.Memory = Memory;
}
public int getMonitor() {
return Monitor;
}
public void setMonitor(int Monitor) {
this.Monitor = Monitor;
}
public String getProcessor() {
return Processor;
}
public void setProcessor(String Processor) {
this.Processor = Processor;
}
}
Contoh Single Inheritance ( Java )
public class Laptop extends Komputer{
String typeBattery;
int durasiBattery;
public int getDurasiBattery() {
return durasiBattery;
}
public void setDurasiBattery(int durasiBattery) {
this.durasiBattery = durasiBattery;
}
public String getTypeBattery() {
return typeBattery;
}
public void setTypeBattery(String typeBattery) {
this.typeBattery = typeBattery;
}
}
Contoh Single Inheritance ( Java )
public class Circle {
private double radius;
Circle(double r) { //Constructor
radius = r;
}
Circle() { //Constructor
radius = 1.0;
}
public double getRadius() {
return radius;
}
public double findArea() {
return radius*radius*3.14;
}
}
Contoh Single Inheritance ( Java )
public class Cylinder extends Circle {
private double length;
public Cylinder() { //Constructor
super();
length = 1.0;
}
public Cylinder(double r,double l) { //Constructor
super(r);
length = l;
}
public double getLength() {
return length;
}
public double findArea() {
System.out.println(“Call Cylinder find Area”);
return 2*super.findArea()+2*getRadius()*3.14159*length;
}
public double findVolume() {
return findArea() * length;
}
}
Contoh Single Inheritance ( Java )
public class Test {
public static void main(String [] Args) {
//Create Cylinder object and display it's properties
Cylinder myCylinder = new Cylinder(5.0,2.0);
System.out.println("The length : "+myCylinder.getLength());
System.out.println("The radius : "+myCylinder.getRadius());
System.out.println("The Cylinder Volume : "+myCylinder.findVolume());
System.out.println("The area of Circle : "+myCylinder.findArea());
}
}
Multiple Inheritance (Pewarisan Jamak)
Kelas yang diturunkan lebih dari satu kelas yang berbeda (jumlah kelas dasarnya lebih dari satu)
Java tidak mendukung Multiple Inheritance
C++ mendukung Multiple Inheritance
Java menggunakan interface untuk menggantikan konsep multiple inheritance Multiple Interface Inheritance
Multiple Inheritance (Pewarisan Jamak)
Class A Class B
Class C
Class B
Syntax Multiple Inheritanceclass A{ . . .};class B{ . . .}class C: public A, public B{ . . .}
Contoh Multiple Inheritance (C++)
class ayah{ public: void rambut(){ cout<<">Rambutnya Keriting"<<endl; } };
class ibu{ public: void kulit(){ cout<<">Kulitnya Putih"<<endl; } };
Contoh Multiple Inheritance (C++)
class anak : public ayah, public ibu{ public: void hidung(){ cout<<">Hidung anak itu
mancung"<<endl<<endl; } };
class cucu : public ayah, public ibu{ public: void pandai(){ cout<<">Cucu dari Kakek dan Nenek itu pandai
berhitung"<<endl<<endl; } };
Virtual Multiple Inheritance
Kelas yang diturunkan lebih dari satu kelas yang berbeda (jumlah kelas dasarnya lebih dari satu)
Hanya saja, beberapa diantara kelas dasar tersebut merupakan kelas turunan dari kelas dasar yang sama
Virtual Multiple Inheritance
Class A
Class B
Class D Class E
Class C
Class F
Syntax VirtualMultiple Inheritanceclass A{ . . .};class B: virtual public A{ . . .};class C: virtual public A{ . . .};class D: public B, public C{ . . .};
Contoh Virtual Multiple Inheritanceclass hewan{public:void bergerak(){cout<<" # Bergerak berpindah
tempat"<<endl;}};class kuda: virtual public hewan{public :void berlari(){cout<<" # Berlarinya sangat
cepat"<<endl;}};class burung: virtual public hewan{
public:void terbang(){cout<<" # Terbang menembus
awan"<<endl;}};class pegasus: public kuda, public
burung{public:void lariterbang(){cout<<"# Bersayap, lari dan
dapat terbang ke angkasa"<<endl;
}};
Hal yg perlu dipertimbangkan saat mewariskan method :
Jika method di superclass PUBLIC maka semua subclass bersifat PUBLIC
Jika method di superclass PROTECTED maka bisa menjadi PROTECTED atau PUBLIC untuk semua subclass
Jika method di superclass DEFAULT maka pada subclass bisa menjadi PRIVATE
Jika method di superclass PRIVATE, maka tidak bisa diwariskan
Hubungan antara Akses dan Inheritance
Hak Akses Subclass dan Superclass
Penentu Hak Akses Super Class Sub Class
PrivatePrivate Tidak Diwariskan
Protected Private
Public Private
ProtectedPrivate Tidak Diwariskan
Protected Protected
Public Protected
PublicPrivate Tidak Diwariskan
Protected Protected
Public Public
Selesai
Universitas Komputer Indonesia