Inheritance ( pewarisan penggambaran penurunan suatu sifat class ).Polimorphisme adalah suatu object dapat memiliki berbagai bentuk,
sebagai object dari class sendiri atau object dari superclassnya
Sehingga, dalam Java dikenal:
a). Superclass / baseclass / parentclass
b). Subclass / derivedclass / childclass / extendedclass
Istilah dalam inheritance yang perlu diperhatikan :
Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
SuperclassSuperclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.
SuperKeyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
Setiap class, hanya dapat memiliki satu superclass, tetapi dapat memiliki banyak subclass !
Keuntungan Inheritance:
Pewarisan (inheritance)
Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.
Contoh dari hierarki class :
Superclass adalah class yang letaknya di atas class tertentu di dalam hierarki.
Subclass adalah class yang letaknya di bawah class tertentu di dalam hierarki.
Keuntungan penggunaan Inheritance dalam OOP : Reusability
public Student(){
System.out.println(“Inside Student:Constructor”);
}
. . . .
}
Inside Person:Constructor
Inside Student:Constructor
Flowchart program ditampilkan dibawah ini :
Polimorphisme
Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //titik referensi Person kepada // sebuah object Student
}
misalnya, kita memiliki sebuah method getName dalam superclass Person. Dan kita meng-override method ini di kedua subclass yaitu Student dan Employee
public class Student {
public String getName(){
System.out.println(“Student Name:” + name);
return name;
}
}
public class Employee {
public String getName(){
System.out.println(“Employee Name:” + name);
return name;
}
}
Sehingga, dalam Java dikenal:
a). Superclass / baseclass / parentclass
b). Subclass / derivedclass / childclass / extendedclass
Istilah dalam inheritance yang perlu diperhatikan :
Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
SuperclassSuperclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.
SuperKeyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
Setiap class, hanya dapat memiliki satu superclass, tetapi dapat memiliki banyak subclass !
Keuntungan Inheritance:
Pewarisan (inheritance)
Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.
Contoh dari hierarki class :
Superclass adalah class yang letaknya di atas class tertentu di dalam hierarki.
Subclass adalah class yang letaknya di bawah class tertentu di dalam hierarki.
Keuntungan penggunaan Inheritance dalam OOP : Reusability
- Ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass
- Jadi, Anda dapat meng-enkode method hanya sekali dan method tersebut dapat digunakan oleh seluruh subclass
- Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya
Untuk mengambil sebuah class, gunakan keyword extends.
Untuk lebih jelasnya, mari buat class parent sederhana, misalkan kita mempunyai class parent bernama Person.
public class Person {
protected String name;
protected String address;
/**
* Default constructor
*/
public Person(){
System.out.println(“Inside Person:Constructor”);
name = “”; address = “”;
}
. . . .
}
protected String name;
protected String address;
/**
* Default constructor
*/
public Person(){
System.out.println(“Inside Person:Constructor”);
name = “”; address = “”;
}
. . . .
}
Sekarang, kita buat class lain bernama Student
Karena murid juga termasuk orang, kita putuskan untuk meng-extend
class Person, sehingga kita dapat mewariskan semua properti dan method
yang telah ada di class Person.
Untuk itu, kita bisa menulis :
public class Student extends Person {public Student(){
System.out.println(“Inside Student:Constructor”);
}
. . . .
}
Ketika sebuah object Student diinstansiasi, default constructor
dari superclass Student dipanggil secara implisit untuk melakukan
inisialisasi seperlunya.
Setelah itu, pernyataan di dalam constructor subclass dijalankan.
Untuk memperjelasnya, perhatikan kode dibawah ini,
public static void main( String[] args ){
Student anna = new Student();
}
Dalam kode ini, kita membuat sebuah object dari class Student. Hasil dari program adalah:Student anna = new Student();
}
Inside Person:Constructor
Inside Student:Constructor
Flowchart program ditampilkan dibawah ini :
Polimorphisme
Pada contoh sebelumnya, kita diberikan parent class yaitu Person
dan subclassnya adalah Student, sekarang kita tambahkan subclass lainnya
dari Person yaitu Employee
Berikut adalah hirarki class nya,
Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya. Sebagai contoh,public static main( String[] args ) {
Person ref;Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //titik referensi Person kepada // sebuah object Student
}
misalnya, kita memiliki sebuah method getName dalam superclass Person. Dan kita meng-override method ini di kedua subclass yaitu Student dan Employee
public class Student {
public String getName(){
System.out.println(“Student Name:” + name);
return name;
}
}
public class Employee {
public String getName(){
System.out.println(“Employee Name:” + name);
return name;
}
}
Kembali ke method utama kita, ketika kita mencoba memanggil method
getName dari referensi Person ref, method getName dari object Student
akan dipanggil.
Sekarang, jika kita memberi ref kepada object Employee, maka method getName juga akan dipanggil
public static main( String[] args ) {
Person ref;
Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //titik referensi Person kepada object Student
//getName dari class Student dipanggil
String temp=ref.getName();
System.out.println( temp );
ref = employeeObject; //titik referensi Person kepada object Employee
//getName dari class Employee dipanggil
String temp = ref.getName();
System.out.println( temp );
Person ref;
Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //titik referensi Person kepada object Student
//getName dari class Student dipanggil
String temp=ref.getName();
System.out.println( temp );
ref = employeeObject; //titik referensi Person kepada object Employee
//getName dari class Employee dipanggil
String temp = ref.getName();
System.out.println( temp );
}
Overloading : penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
Overriding : terjadi ketika deklarasi method subclass dengan nama dan parameter yang sama dengan method dari superclassnya.
Overloading
- class luas.java,:
class Luas{
double panjang, lebar, tinggi;
//konstruktor pertama
Luas(double pj){
this.panjang=pj;
this.lebar=1;
this.tinggi=1;
}
//konstruktor kedua
Luas(double pj,double lb){
this.panjang=pj;
this.lebar=lb;
this.tinggi=1;
}
//konstruktor ketiga
Luas(double pj,double lb,double tg){
this.panjang=pj;
this.lebar=lb;
this.tinggi=tg;
}
}
- class luas.java,:
class Luas{
double panjang, lebar, tinggi;
//konstruktor pertama
Luas(double pj){
this.panjang=pj;
this.lebar=1;
this.tinggi=1;
}
//konstruktor kedua
Luas(double pj,double lb){
this.panjang=pj;
this.lebar=lb;
this.tinggi=1;
}
//konstruktor ketiga
Luas(double pj,double lb,double tg){
this.panjang=pj;
this.lebar=lb;
this.tinggi=tg;
}
}
-class luasBeraksi.java, :
public class LuasBeraksi{
public static void main (String args[]){
System.out.println(“Panggil konstruktor pertama”);
Luas bentuk=new Luas(3.5);
System.out.println(“Panjang = “+bentuk.panjang);
System.out.println(“Lebar = “+bentuk.lebar);
System.out.println(“Tinggi = “+bentuk.tinggi); System.out.println(“Panggil konstruktor kedua”);
Luas bentuk2=new Luas(7.2,2.3);
System.out.println(“Panjang = “+bentuk2.panjang);
System.out.println(“Lebar = “+bentuk2.lebar);
System.out.println(“Tinggi = “+bentuk2.tinggi);
System.out.println(“Panggil konstruktor ketiga”);
Luas bentuk3=new Luas(5.2,3.5,2.1);
System.out.println(“Panjang = “+bentuk3.panjang);
System.out.println(“Lebar = “+bentuk3.lebar);
System.out.println(“Tinggi = “+bentuk3.tinggi);
}
}
public static void main (String args[]){
System.out.println(“Panggil konstruktor pertama”);
Luas bentuk=new Luas(3.5);
System.out.println(“Panjang = “+bentuk.panjang);
System.out.println(“Lebar = “+bentuk.lebar);
System.out.println(“Tinggi = “+bentuk.tinggi); System.out.println(“Panggil konstruktor kedua”);
Luas bentuk2=new Luas(7.2,2.3);
System.out.println(“Panjang = “+bentuk2.panjang);
System.out.println(“Lebar = “+bentuk2.lebar);
System.out.println(“Tinggi = “+bentuk2.tinggi);
System.out.println(“Panggil konstruktor ketiga”);
Luas bentuk3=new Luas(5.2,3.5,2.1);
System.out.println(“Panjang = “+bentuk3.panjang);
System.out.println(“Lebar = “+bentuk3.lebar);
System.out.println(“Tinggi = “+bentuk3.tinggi);
}
}
hasil dari script diatas adalah dibawah ini:
Overriding
- class mobilBeraksi.java,:
class mobilBergerak{
private String merek;
mobilBergerak(String m){
this.merek=m;
System.out.println(this.merek+” adalah kendaraan beroda 4″);
}
//procedure bergerak
void bergerak(String arah){
System.out.println(“melaju ke arah ” +arah);
}
//overload procedure bergerak
void bergerak(String arah, int jauh){
System.out.println(“melaju ke arah “+arah+” sejauh “+jauh+” km”);
}
}
private String merek;
mobilBergerak(String m){
this.merek=m;
System.out.println(this.merek+” adalah kendaraan beroda 4″);
}
//procedure bergerak
void bergerak(String arah){
System.out.println(“melaju ke arah ” +arah);
}
//overload procedure bergerak
void bergerak(String arah, int jauh){
System.out.println(“melaju ke arah “+arah+” sejauh “+jauh+” km”);
}
}
public class kijang
{
public static void main(string args[])
{mobil Bergerak kijang=new mobil Bergerak(“kijang”);
kijang .bergerak(“maju”);
kijang .bergerak(“mundur”, 3);
}
}
{
public static void main(string args[])
{mobil Bergerak kijang=new mobil Bergerak(“kijang”);
kijang .bergerak(“maju”);
kijang .bergerak(“mundur”, 3);
}
}
Sumber :
http://setyonugroho09.wordpress.com
0 komentar:
Posting Komentar