Pages

Jumat, 09 Desember 2011

Pewarisan (PBO)


Dalam  Java,  semua  class,  termasuk  class  yang  membangun  Java  API,  adalah  subclasses
dari superclass Object. Contoh hirarki class diperlihatkan di bawah ini. 
 Beberapa  class  di  atas  class  utama  dalam  hirarki  class  dikenal  sebagai  superclass.
Sementara  beberapa  class  di  bawah  class  pokok  dalam  hirarki  class  dikenal  sebagai
subclass dari class tersebut.
 Pewarisan  adalah  keuntungan  besar  dalam  pemrograman  berbasis  object  karena  suatu
sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari
semua  subclasses.  Jadi,  Anda  dapat  menuliskan  kode  method  hanya  sekali  dan  mereka
dapat  digunakan  oleh  semua  subclass.  Subclass  hanya  perlu  mengimplementasikan.
Mendefinisikan SuperClass dan SubClass
Untuk  memperoleh  suatu  class,  kita  menggunakan  kata  kunci  extend.  Untuk
mengilustrasikan  ini,  kita  akan  membuat  contoh  class  induk.  Dimisalkan  kita  mempunyai
class induk yang dinamakan Person.

 public class Person
{
  protected String  name;
  protected String  address;
  
  /**
   * Default constructor
   */
  public Person(){
    System.out.println(“Inside Person:Constructor”);
    name = "";
    address = "";    
  }  

/**
   * Constructor dengan dua parameter
   */
  public Person( String name, String address ){
    this.name = name;
    this.address = address;   
  }

/**
   * Method accessor
   */
  public String getName(){
    return name;  
  }

public String getAddress(){
    return address;  
  }

public void setName( String name ){
    this.name = name; 
  }

public void setAddress( String add ){
    this.address = add;  
  }
}
Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected. Alasannya
kita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa diakses oleh subclasses
dari  superclassess.  Jika  kita  mendeklarasikannya  sebagai  private,  subclasses  tidak  dapat
menggunakannya.  Catatan  bahwa  semua  properti  dari  superclass  yang  dideklarasikan
sebagai public, protected dan default dapat diakses oleh subclasses-nya.

Sekarang,  kita  ingin  membuat  class  lain  bernama  Student.  Karena  Student  juga  sebagai
Person,  kita  putuskan  hanya  meng-extend  class  Person,  sehingga  kita  dapat  mewariskan
semua  properti  dan  method  dari  setiap  class  Person  yang  ada.  Untuk  melakukan  ini,  kita
tulis,
public class Student extends Person
{
  public Student(){
    System.out.println(“Inside Student:Constructor”);
    //beberapa kode di sini
  }  

// beberapa kode di sini
  }
Ketika  object  Student  di-instantiate,  default  constructor  dari  superclass  secara  mutlak
meminta  untuk  melakukan  inisialisasi  yang  seharusnya.  Setelah  itu,  pernyataan  di  dalam
subclass dieksekusi. Untuk mengilustrasikannya, perhatikan kode berikut,

public static void main( String[] args ){
  Student anna = new Student(); 
  }

Dalam  kode  ini,  kita  membuat  sebuah  object  dari  class  Student.  Keluaran  dari  program
adalah, 

Inside Person:Constructor  
Inside Student:Constructor 
 
Kata Kunci Super
 
Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini
dilakukan  dengan  pemanggil  construktor  super.  Pemanggil  constructor  super  dalam
constructor  dari  subclass  akan  menghasilkan  eksekusi  dari  superclass  constructor  yang
bersangkutan, berdasar dari argumen sebelumnya.

Sebagai contoh, pada contoh class sebelumnya. Person dan Student, kita tunjukkan contoh
dari pemanggil constructor super. Diberikan kode berikut untuk Student,
  
  public Student(){
  super( "SomeName", "SomeAddress" ); 
  System.out.println("Inside Student:Constructor");  
  }

Kode  ini  memanggil  constructor  kedua  dari  superclass  terdekat  (yaitu  Person)  dan
mengeksekusinya. Contoh kode lain ditunjukkan sebagai berikut,

public Student(){
  super();  
  System.out.println("Inside Student:Constructor");   
}

Kode  ini  memanggil  default  constructor  dari  superclass  terdekat  (yaitu  Person)  dan
mengeksekusinya. 

Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super:

1.  Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor.
2.  Pemanggil super() hanya dapat digunakan dalam definisi constructor.
3.  Termasuk  constructor  this()  dan  pemanggil  super()  TIDAK  BOLEH  TERJADI  DALAM
constructor YANG SAMA.

Pemakaian  lain  dari  super  adalah  untuk  menunjuk  anggota  dari  superclass(seperti
reference this). Sebagai contoh,

  public Student()
{
  super.name = “somename”;
  super.address = “some address”;
  }
 Overriding Method
 Untuk  beberapa  pertimbangan,  terkadang  class  asal  perlu  mempunyai  implementasi
berbeda  dari  method  yang  khusus  dari  superclass    tersebut.  Oleh  karena  itulah,  method
overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam
superclass dengan menyediakan implementasi baru dari method tersebut.
  
Misalnya  kita  mempunyai  implementasi  berikut  untuk  method  getName  dalam  superclass
Person,

public class Person
{
  :
  :
  public String getName(){
    System.out.println("Parent: getName");  
    return name;  
  }
  :
}

Untuk override, method getName dalam subclass Student, kita tulis,
  
    public class Student extends Person
{
  :
  :
  public String getName(){
    System.out.println("Student: getName");   

    return name;  
  } }
Jadi,  ketika  kita  meminta  method  getName  dari  object  class  Student,  method  overridde
akan dipanggil, keluarannya akan menjadi,

    Student: getName
 
Method Final dan Class Final

Dalam  Java,  juga  memungkinkan  untuk  mendeklarasikan  class-class  yang  tidak  lama
menjadi  subclass.  Class  ini  dinamakan  class  final.  Untuk  mendeklarasikan  class  untuk
menjadi  final  kita  hanya  menambahkan  kata  kunci  final  dalam  deklarasi  class.  Sebagai
contoh, jika kita ingin class Person untuk dideklarasikan final, kita tulis,
  
  public final class Person
{
  //area kode
  }
  
Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak
dapat di-override. Contoh-contoh dari class ini adalah Integer, Double, dan String.

Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. Method ini
dapat kita panggil method final. Untuk mendeklarasikan method untuk menjadi final, kita
tambahkan kata kunci final ke dalam deklarasi method. Contohnya, jika kita ingin method
getName dalam class Person untuk dideklarasikan final, kita tulis,
    
    public final String getName(){
  return name; 
}

Method  static  juga  secara  otomatis  final.  Ini  artinya  Anda  tidak  dapat  membuatnya
override.
 

0 komentar:

Posting Komentar

 

(c)2009 PD-Child. Based in Wordpress by wpthemesfree Created by Templates for Blogger