Tutorial OOP Java Part 11: Pengertian dan Fungsi Perintah this

Dalam tutorial OOP bahasa pemrograman Java Duniailkom kali ini kita akan membahas pengertian dan fungsi dari perintah this.


Pengertian Perintah this

Dalam bahasa Java, this adalah perintah khusus untuk mengakses object saat ini. Perintah this biasanya dipakai untuk menghindari kesalahan akses antara property dan argument method yang memiliki nama sama. Pengertian ini akan lebih jelas saat kita masuk ke praktek kode program.

Silahkan pelajari sejenak kode program berikut:

class Laptop {
  Laptop(String merk) { 
    System.out.println("Laptop merk "+merk); 
  }
}
  
class BelajarJava {
  public static void main(String args[]){
    Laptop laptopAndi = new Laptop("Asus");
  }
}

Hasil kode program:

Laptop merk Asus

Di baris 1-5, terdapat pendefinisian class Laptop dengan sebuah constructor. Constructor tersebut menerima satu parameter merk untuk kemudian diakses dari dalam perintah System.out.println().

Proses instansiasi class Laptop dilakukan pada baris 9. Karena constructor butuh 1 parameter, maka kita isi dengan new Laptop("Asus"). Hasilnya, akan tampil string "Laptop merk Asus".

Tidak ada sesuatu yang baru disini karena sudah kita bahas dalam tutorial OOP Java sebelumnya.

Lanjut, silahkan pelajari juga kode program berikut:

class Laptop {
  String merk = "Acer";
  Laptop() { 
    System.out.println("Laptop merk "+merk); 
  }
}
  
class BelajarJava {
  public static void main(String args[]){
    Laptop laptopAndi = new Laptop();
  }
}

Hasil kode program:

Laptop merk Acer

Kali ini di dalam class Laptop saya membuat property merk di baris 2. Property merk langsung diisi string "Acer" untuk selanjutnya di tampilkan dari dalam constructor dengan perintah System.out.println() di baris 4.

Perhatikan bahwa sekarang constructor class Laptop tidak butuh parameter. Variabel merk di akhir baris 4 akan merujuk ke property merk milik class Laptop.

Sekarang bagaimana jika kita gabung property merk dengan parameter merk dalam satu kode program?

class Laptop {
  String merk = "Acer";
  Laptop(String merk) { 
    System.out.println("Laptop merk "+merk);
  }
}
  
class BelajarJava {
  public static void main(String args[]){
    Laptop laptopAndi = new Laptop("Asus");
  }
}

Sekarang class Laptop memiliki property merk="Acer" di baris 2, tapi juga menerima parameter merk di baris 3. Pada saat proses instansiasi di baris 10, saya membuat class Laptop dengan perintah new Laptop("Asus").

Pertanyaannya, apa teks yang akan tampil? apakah "Laptop merk Asus", atau "Laptop merk Acer"? Berikut hasilnya:

Laptop merk Asus

Ternyata yang akan dipakai oleh bahasa Java adalah parameter merk, bukan property merk.

Bagaimana cara kita "memaksa" bahasa Java untuk memakai property merk? Disinilah perlunya penggunaan keyword this:

class Laptop {
  String merk = "Acer";
  Laptop(String merk) { 
    System.out.println("Laptop merk "+this.merk);
  }
}
  
class BelajarJava {
  public static void main(String args[]){
    Laptop laptopAndi = new Laptop("Asus");
  }
}

Hasil kode program:

Laptop merk Acer

Perhatikan penulisan this.merk di akhir baris 4. Ini adalah cara untuk mengakses property merk kepunyaan object laptopAndi di baris 2. Jika tanpa this, maka merk akan merujuk ke parameter merk di baris 3.


Perintah this Untuk Proses Inisialisasi Property

Untuk praktek yang lebih real, keyword this sering dipakai saat proses inisialisasi property di dalam constructor. Berikut contoh kasusnya:

class Laptop {
  String merk;
  String pemilik;
  Laptop(String merk, String pemilik) { 
    this.merk = merk;
    this.pemilik = pemilik;
  }
  
  String cekInfo() { 
    return "Laptop "+merk+" milik "+pemilik; 
  }
}
  
class BelajarJava {
  public static void main(String args[]){
    
    Laptop laptopAndi = new Laptop("Asus","Andi");
    System.out.println(laptopAndi.cekInfo());
    
    Laptop laptopLisa = new Laptop("Apple","Lisa");
    System.out.println(laptopLisa.cekInfo());
    
  }
}

Tutorial OOP Java - Pengertian dan Fungsi perintah this

Class Laptop sekarang memiliki 2 buah property: merk dan pemilik, namun keduanya belum di isi nilai apapun (baris 2-3).

Proses pengisian atau inisialisasi property merk dan pemilik di lakukan dari dalam constructor pada baris 5-6, yang nilainya berasal dari parameter constructor.

Pada saat object Laptop di-instansiasi dengan perintah new Laptop("Asus","Andi") di baris 17, string "Asus" akan mengisi property merk, dan string "Andi" akan mengisi property pemilik.

Dengan cara ini, method cekInfo() bisa mengakses kedua property dan mengembalikan nilainya dalam sebuah string "Laptop "+merk+" milik "+pemilik.

Jadi perintah this disini berfungsi untuk menghindari salah akses apakah yang dimaksud itu property, atau parameter.

Jika this dihapus dan isi constructor ditulis sebagai berikut:

...
  Laptop(String merk, String pemilik) { 
    merk = merk;
    pemilik = pemilik;
  }
...

Maka hasil kode program menjadi:

Laptop null milik null
Laptop null milik null

Dalam kasus kita menggunakan nama property dan parameter yang berbeda, variabel this ini boleh tidak ditulis:

class Laptop {
  String merk;
  String pemilik;
  Laptop(String parameterMerk, String parameterPemilik) { 
    merk = parameterMerk;
    pemilik = parameterPemilik;
  }
  
  String cekInfo() { 
    return "Laptop "+merk+" milik "+pemilik; 
  }
}
  
class BelajarJava {
  public static void main(String args[]){
    
    Laptop laptopAndi = new Laptop("Asus","Andi");
    System.out.println(laptopAndi.cekInfo());
    
    Laptop laptopLisa = new Laptop("Apple","Lisa");
    System.out.println(laptopLisa.cekInfo());
    
  }
}

Sebagai parameter, saya menggunakan nama parameterMerk dan parameterPemilik seperti di baris 4. Karena nama ini berbeda dengan nama property merk dan pemilik, maka tidak masalah jika tidak menggunakan this di baris 5-6.


Demikianlah pembahasan kita tentang pengertian dan fungsi perintah this dalam bahasa pemrograman Java. Perintah ini cukup sering dipakai, sehingga sebaiknya bisa dipahami.

Dalam tutorial OOP Java berikutnya, akan dibahas tentang pengertian dan fungsi perintah static.

Add Comment