Blogs Blogs
Blogs »
Keyword this dan super : Dasar Pemrograman Java

KEYWORD THIS DAN SUPER

1.     Keyword this

Anggota statik suatu kelas bisa digunakan langsung di dalam kelas tersebut. Untuk digunakan di kelas lain, maka ia harus dipanggil dengan nama lengkapnya dalam bentuk "namaKelas.namaAnggota", misalnya "System.out" adalah variabel anggota statik dengan nama "out" di dalam kelas "System". Kita bisa menggunakan nama lengkap kelas tersebut di manapun, bahkan dari dalam kelas yang sama, misalnya karena nama anggota tersebut disembunyikan oleh variabel lokal yang namanya sama.

Variabel dan metode instansi juga bisa digunakan langsung di dalam kelas tersebut, misalnya suatu variabel instansi bisa digunakan langsung oleh metode instansi di kelas yang sama. Anggota instansi juga memiliki nama lengkap akan tetapi ingat bahwa anggota instansi dimiliki oleh objek, bukan kelas. Sehingga untuk memanggil suatu anggota instansi, kita harus menggunakan nama objek yang diciptakan dari kelas tersebut, dalam bentuk namaObjek.namaAnggota.

Akan tetapi, misalnya kita sedang menulis metode instansi di suatu kelas. Bagaimana caranya kita memanggil anggota instansi kelas yang sama jika kita belum tahu nama objek apa yang diciptakan dari kelas ini?

Java memiliki variabel spesial yang dinamakan "this" yang bisa digunakan untuk kasus di atas. Variabel ini digunakan pada suatu objek untuk memanggil metode atau variabel instansi pada objek yang sama. Maksudnya, this, merujuk pada "objek ini" yaitu objek di mana metode sedang dijalankan. Jika x adalah variabel instansi dalam suatu objek, maka this.x adalah nama lengkap variabel tersebut jika dipanggil dari dalam objek yang sama. Jika metode suatuMetode() adalah metode instansi pada suatu objek, maka this.suatuMetode() bisa digunakan untuk memanggil metode tersebut dari objek yang sama. Ketika komputer menjalankan perintah tersebut, komputer akan mengganti variabel this dengan objek yang berjalan pada saat itu.

Salah satu kegunaaan this adalah pada konstruktor, misalnya :

 

public class Murid {

    private String nama;  // Nama murid

 

    public Murid(String nama) {

        // Konstruktor, membuat murid dengan nama yang diberikan

        this.nama = nama;

    }

    .

    .   // Variabel dan metode lain.

    .

}

 

Dalam konstruktor di atas, variabel instansi nama disembunyikan oleh parameter formal yang bernama sama. Akan tetapi, variabel instansi masih tetap bisa dipanggil dengan nama lengkapnya, this.nama. Cara ini merupakan cara yang lazim, artinya kita tidak perlu mengganti nama parameter formal dengan nama lain agar namanya tidak bentrok dengan nama salah satu variabel instansinya. Kita bisa menggunakan nama parameter formal yang sama persis dengan variabel instansinya.

Ada lagi kegunaan lain dari this. Ketika kita sedang menulis metode instansi, kita ingin memberikan objek sebagai parameter aktual. Dalam hal ini, kita bisa menggunakan this sebagai parameter aktualnya. Misalnya, kita ingin mencetak suatu objek sebagai string, kita bisa menggunakan perintah "System.out.println(this);". Atau kita ingin mengisi nilai this ke dalam variabel lain. Pokoknya, kita bisa melakukan segala hal seperti layaknya variabel kecuali mengganti isinya.

 

2.     Keyword super

Keyword  super digunakan untuk melakukan  reference ke  superclass-nya. Menurut penggunaannya, keyword super dapat digunakan dalam dua cara yaitu :

a.      Memanggil superclass constructor

Untuk memanggil superclass constructor, syntaks yang digunakan adalah :

super(parameters);

 

            Contoh pada Cylinder.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;    

  }

...

}

 

 

Catatan :

pemanggilan keyword super harus dilakukan awal didalam constructor.

 

b.      Memanggil superclass method

Untuk memanggil superclass method, syntaks yang digunakan adalah :

super.method(parameters);

 

            Contoh pada Cylinder.java, findVolume dapat dibuat menjadi :

public class Cylinder extends Circle {

  ... 

  public double findVolume() {

    return super.findArea() * length;

  }

  ...

}

 

Penggunaan keyword super untuk method boleh digunakan atau tidak digunakan, apabila  method pada  superclass  tidak  dioverride / dibuat ulang pada  subclass. Bila terjadi  method override keyword super harus digunakan.

Contoh pada Cylinder.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;

  } 

 

}

 

c.      Contoh penggunaan keyword super :

//file : Circle.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.14159;

  }

}

 

//file : Cylinder.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 findVolume() {

    return findArea() * length;

  } 

  

}

 

//file : Test.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 is "+myCylinder.getLength());

       System.out.println("The radius is "+myCylinder.getRadius());

       System.out.println("The Cylinder Volume is

"+myCylinder.findVolume());

       System.out.println("The area of Circle is

"+myCylinder.findArea());

   } 

 }

 

 

End of – Layouts

Next

  • Comments
Trackback URL: